zoukankan      html  css  js  c++  java
  • [LintCode] Insertion Sort List

    Sort a linked list using insertion sort.

    Example

    Given 1->3->2->0->null, return 0->1->2->3->null.

     1 /**
     2  * Definition for ListNode.
     3  * public class ListNode {
     4  *     int val;
     5  *     ListNode next;
     6  *     ListNode(int val) {
     7  *         this.val = val;
     8  *         this.next = null;
     9  *     }
    10  * }
    11  */ 
    12 public class Solution {
    13     /**
    14      * @param head: The first node of linked list.
    15      * @return: The head of linked list.
    16      */
    17     public ListNode insertionSortList(ListNode head) {
    18         if(head == null || head.next == null){
    19             return head;
    20         }
    21         ListNode dummy = new ListNode(0);
    22         dummy.next = head;
    23         ListNode sorted = dummy.next; ListNode prev = dummy;
    24         ListNode unsorted = head.next;
    25         sorted.next = null;
    26         while(unsorted != null){
    27             while(sorted != null && sorted.val <= unsorted.val){
    28                 prev = sorted;
    29                 sorted = sorted.next;    
    30             }  
    31             ListNode temp = unsorted.next;
    32             unsorted.next = sorted;
    33             prev.next = unsorted;
    34             
    35             unsorted = temp;
    36             
    37             prev = dummy;
    38             sorted = dummy.next;
    39         }
    40         return dummy.next;
    41     }
    42 }
  • 相关阅读:
    bzoj 1367
    codeforces 757F
    bzoj 3600
    比赛环境设置
    线段树合并
    BZOJ2105: 增强型LCP
    BZOJ3156: 防御准备
    BZOJ3252: 攻略
    BZOJ2464: 中山市选[2009]小明的游戏
    Beta Round #9 (酱油杯noi考后欢乐赛)乌鸦喝水
  • 原文地址:https://www.cnblogs.com/lz87/p/7660419.html
Copyright © 2011-2022 走看看