Sort List
来源:互联网 发布:javascript视频免费 编辑:程序博客网 时间:2024/06/05 19:34
题意:对链表进行排序,要求的时间复杂度为O(n log n)。
解题思路:O(nlogn)的排序有快速排序、归并排序、堆排序。这里使用归并排序,归并排序的基本思想是:
找到链表的中间节点,然后递归对前半部分和后半部分分别进行归并排序,最后对两个以排好序的链表进行Merge。
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */public class Solution { public ListNode sortList(ListNode head) { if (head == null || head.next == null) return head;//快慢指针找中间节点ListNode fast = head;ListNode slow = head;while (fast.next != null && fast.next.next != null) {slow = slow.next;fast = fast.next.next;}ListNode headB = slow.next;slow.next = null;return mergeList(sortList(head), sortList(headB)); } public ListNode mergeList(ListNode headA,ListNode headB) {ListNode dummy = new ListNode(0);ListNode curNode = dummy;//融合两个链表while (headA != null && headB != null) {if (headA.val >= headB.val) {curNode.next = headB;headB = headB.next;}else {curNode.next = headA;headA = headA.next;}curNode = curNode.next;}if (headA != null) {curNode.next = headA;}else if(headB != null){curNode.next = headB;}return dummy.next;}}
0 0
- list sort
- list sort
- Sort List
- Sort List
- list - sort
- Sort List
- Sort List
- Sort List
- Sort List
- Sort List
- Sort List
- Sort List
- Sort List
- Sort List
- Sort List
- Sort List
- Sort List
- Sort List
- 数字图像处理的三个层次
- linux 系统调用与库函数的区别
- yii如何使用事务,begin,commit,rollback
- nutch1.12抓取页面不全的排查
- VC----MFC 消息映射机制剖析
- Sort List
- myeclipse 修改 jsp 的模板
- CSS3 传统布局(下)(20160903-0034)
- MyBatis学习笔记(一)——MyBatis快速入门
- Android6.0 AMS启动Activity(一) 启动Activity两种方式
- linux awk命令详解
- VC----MFC的消息映射机制
- 关于注解的使用(持续更新...)
- POJ 3764(dfs+字典树)