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     }
  • 相关阅读:
    Unicode编码
    第2章 词法结构
    ubuntu thrift
    Django admin 忘记密码
    STL中的优先级队列priority_queue
    哈希表面试题-转载
    C++中基于成员函数是否是const重载成员函数
    printf格式输出知识整理
    Linux dns和网络连接配置方法
    Linux下高效并发服务器的常用方法和案例(转)
  • 原文地址:https://www.cnblogs.com/davidnyc/p/8628193.html
Copyright © 2011-2022 走看看