148. Sort List 链表归并排序
来源:互联网 发布:常用的推荐系统算法 编辑:程序博客网 时间:2024/05/16 12:49
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */void mergeLink(ListNode* head,ListNode* mid, ListNode* last){ ListNode* head1=head; ListNode* end1 = mid; ListNode* rehead2 = mid->next;//记录第一个链表的结尾 ListNode* head2 = mid->next,*end2 = last; ListNode* temp1,*temp2; while(head1->next!=rehead2){ while(head1->next!=rehead2 && head1->next->val<=head2->val){//当第一个链表小雨第二个链表就一直遍历 head1=head1->next; } if(head1->next == rehead2){//当第一个链表到尾了直接把第二个链表接到第一个链表上 head1->next = head2; break; }else{ temp2 = head2->next; temp1 = head1->next; head1->next = head2; head2->next = temp1; head2 = temp2; head1=head1->next; if(head2 == end2){//当第二个链表到尾了,找到第一个链表的尾然后把第二个链表的尾接到第一个链表的尾 while(head1->next!=rehead2) head1 = head1->next; head1->next = head2; break; } } }} void mergesort(ListNode* head,ListNode* last){ ListNode* fast = head,*slow = head; if(head->next == last || head->next->next==last) return; while(fast!=last && fast->next!=last){//寻找中位数 fast=fast->next->next; slow = slow->next; } mergesort(head,slow->next); mergesort(slow,last); mergeLink(head,slow,last);//合并两个链表 return;}class Solution {public: ListNode* sortList(ListNode* head) { if(head==NULL || head->next == NULL) return head; ListNode* newHead = new ListNode(0); newHead->next = head; mergesort(newHead,nullptr); return newHead->next; }};
0 0
- 148. Sort List 链表归并排序
- Leetcode Sort List 链表归并排序
- Sort List 归并排序链表
- leetcode 148. Sort List 链表归并排序
- 归并排序---Sort List
- Sort List——链表的快速/归并排序
- 链表的二路归并排序 Sort List
- leetcode:Sort List(链表的归并排序)
- [C++]LeetCode: 125 Sort List (归并排序链表)
- LeetCode Sort List 链表的归并排序
- 148 Sort List (归并实现链表排序)
- 148. Sort List(链表的归并排序,用快慢指针来partition)
- sort list leetcode (归并排序)
- LeetCode 148. Sort List 解题报告(归并排序小结)
- 148. Sort List--单链表自底向上归并排序
- 148. Sort List 链表排序(C++)
- 【LeetCode】Sort List 解题报告(对链表进行归并排序)
- 链表的归并排序 特殊优化, merge sort for list,非快慢指针法
- C++learning
- java基础知识:java项目的命名规范
- Java集合框架的层次结构和使用规则梳理
- volatile关键字解析
- 探索《How Tomcat Works》 心得(五) 日志系统
- 148. Sort List 链表归并排序
- IT传奇人物
- 一道简单面试题和霍尔规则
- SCPPO(四):框架的学习
- 第16周项目——文件阅读2
- Exynos4412 中断驱动开发(三)—— 设备树中中断节点的创建
- 深入剖析ThreadLocal
- Exynos4412 中断驱动开发(二)—— 中断处理流程分析
- 同步容器