[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 }

 

转载于:https://www.cnblogs.com/lz87/p/7660419.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值