首页 > 其他 > 详细

Sort List

时间:2014-02-25 03:00:36      阅读:315      评论:0      收藏:0      [点我收藏+]
bubuko.com,布布扣
 1 public class Solution {
 2     public ListNode sortList(ListNode head) {
 3         if(head==null || head.next==null) return head;
 4         ListNode fast = head, slow = head;
 5         while(true){
 6             fast = fast.next;
 7             if(fast==null) break;
 8             fast = fast.next;
 9             if(fast==null) break;
10             slow = slow.next;
11         }
12         ListNode newHead = slow.next;
13         slow.next = null;
14         return merge(sortList(head),sortList(newHead));
15     }
16     public ListNode merge(ListNode p1,ListNode p2){
17         ListNode safe = new ListNode(-1);
18         ListNode p3 = safe;
19         while(p1!=null && p2!=null){
20             if(p1.val>p2.val){
21                 p3.next = p2;
22                 p2 = p2.next;
23             }
24             else{
25                 p3.next = p1;
26                 p1 = p1.next;
27             }
28             p3 = p3.next;
29         }
30         p3.next =p1==null?p2:p1;
31         return safe.next;
32     }
33 }
View Code

Sort a linked list in O(n log n) time using constant space complexity.

Sort List

原文:http://www.cnblogs.com/krunning/p/3563991.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!