zoukankan      html  css  js  c++  java
  • 0147. Insertion Sort List (M)

    Insertion Sort List (M)

    题目

    Sort a linked list using insertion sort.

    A graphical example of insertion sort. The partial sorted list (black) initially contains only the first element in the list.
    With each iteration one element (red) is removed from the input data and inserted in-place into the sorted list

    Algorithm of Insertion Sort:

    1. Insertion sort iterates, consuming one input element each repetition, and growing a sorted output list.
    2. At each iteration, insertion sort removes one element from the input data, finds the location it belongs within the sorted list, and inserts it there.
    3. It repeats until no input elements remain.

    Example 1:

    Input: 4->2->1->3
    Output: 1->2->3->4
    

    Example 2:

    Input: -1->5->3->4->0
    Output: -1->0->3->4->5
    

    题意

    对给定的链表进行插入排序。

    思路

    遍历原链表,每次将当前结点从原链表中取出,插入到新链表对应的位置即可。


    代码实现

    Java

    class Solution {
        public ListNode insertionSortList(ListNode head) {
            ListNode dummy = new ListNode(0);
            
            while (head != null) {
                // 将每一个原结点断开并取出
                ListNode p = head;
                head = head.next;
                p.next = null;
    
                // 插入到新链表中
                ListNode pre = dummy, cur = dummy.next;
                while (cur != null && cur.val < p.val) {
                    cur = cur.next;
                    pre = pre.next;
                }
                p.next = cur;
                pre.next = p;
            }
            return dummy.next;
        }
    }
    

    JavaScript

    /**
     * @param {ListNode} head
     * @return {ListNode}
     */
    var insertionSortList = function (head) {
      let dummy = new ListNode()
    
      while (head) {
        let node = head
        head = head.next
        node.next = null
    
        let pre = dummy
        let cur = dummy.next
        while (cur && cur.val < node.val) {
          cur = cur.next
          pre = pre.next
        }
        node.next = cur
        pre.next = node
      }
    
      return dummy.next
    }
    
  • 相关阅读:
    显因子模型简介
    关联规则中最小支持度和最小置信度
    Matlab读取音频数据
    初识禁忌搜索算法
    Word中将图表变为表格
    明尼苏达推荐系统导论(第一课 欢迎来到RS)
    python复杂网络分析库NetworkX
    python使用zlib实现压缩与解压字符串
    PostgreSQL 对字段大小写敏感
    pycharm快捷键及一些常用设置
  • 原文地址:https://www.cnblogs.com/mapoos/p/13914916.html
Copyright © 2011-2022 走看看