zoukankan      html  css  js  c++  java
  • LC.147. Insertion Sort List

    https://leetcode.com/problems/insertion-sort-list/description/
    Sort a linked list using insertion sort.
    insertion sort 默认第一位已经SORT 好了, 取出下一位,然后从头比较。 一点一点向后面挪动
    time complexity: o(n^2)
    space complexity: o(1)


     1 public ListNode insertionSortList(ListNode head) {
     2         if (head == null || head.next == null) return head;
     3         ListNode dummy = new ListNode(0);
     4         dummy.next = head ;
     5         ListNode curr = head ;
     6         ListNode temp = null ;
     7         ListNode pre = null ; // this is used for the head
     8         // if curr.next == null, means already at the end, no sort needed.
     9         while (curr != null && curr.next != null){
    10             if (curr.val<=curr.next.val){
    11                 curr = curr.next ;
    12             } else{
    13              /*     -1  -2  0  1  5
    14                  d       c---->1
    15                  p
    16              * */
    17                 temp = curr.next ; //temp = 0
    18                 curr.next = temp.next ; //-2 -> 1
    19                 pre = dummy; //start from beg.
    20                 /*  -1  -2    1  5   |  0
    21                 * p  p'  p''
    22                 * */
    23                 //since we are comparing from the dummy, the head could be changed
    24                 while (pre.next.val <= temp.val){
    25                     pre = pre.next; //head not changed
    26                 }
    27                 temp.next= pre.next;
    28                 /*works for both change dummy.next and middle condition:
    29                   如果一开始的话,DUMMY 和 PRE 是指向一个 OBJ
    30                  */
    31                 pre.next = temp ;
    32             }
    33         }
    34         return dummy.next;
    35     }
  • 相关阅读:
    freemarker报错之五
    freemarker处理空值
    freemarker报错之四
    freemarker之include指令
    freemarker之list
    freemarker报错之三
    freemarker中的if...elseif...else语句
    freemarker获取封装类中对象的属性
    单块读和多块读操作汇总
    freemarker报错之二
  • 原文地址:https://www.cnblogs.com/davidnyc/p/8628193.html
Copyright © 2011-2022 走看看