单链表的归并排序:时间复杂度O(nlogn),空间复杂度O(1)
来源:互联网 发布:淘宝可以货到付款吗? 编辑:程序博客网 时间:2024/05/22 17:06
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* sortList(ListNode* head) { if(!head||!head->next) return head; ListNode*pslow=head; ListNode*pfast=head->next; while(pfast&&pfast->next){ pslow=pslow->next; pfast=pfast->next->next; } ListNode*h2=pslow->next; pslow->next=NULL; ListNode*p1=sortList(head); ListNode*p2=sortList(h2); return mergeList(p1,p2); } ListNode* mergeList(ListNode* headA,ListNode*headB){ ListNode*newhead=new ListNode(0); ListNode*tail=newhead; while(headA&&headB){ if(headA->val<headB->val){ tail->next=headA; tail=headA; headA=headA->next; }else{ tail->next=headB; tail=headB; headB=headB->next; } } while(headA) { tail->next=headA; tail=headA; headA=headA->next; } while(headB) { tail->next=headB; tail=headB; headB=headB->next; } ListNode* rehead=newhead->next; delete newhead; return rehead; }};
阅读全文
0 0
- 单链表的归并排序:时间复杂度O(nlogn),空间复杂度O(1)
- O(1)空间复杂度的归并排序
- O(1)空间复杂度的归并排序
- 时间复杂度O(n),空间复杂度O(1)的排序
- 归并排序平均时间复杂度O(NlogN)
- O(nlogn)时间复杂度 链表排序
- 快速排序[平均时间复杂度O(NlogN)]
- 归并排序,空间复杂度O(1)的实现
- 归并排序空间复杂度O(1)的实现
- 排序的最低时间复杂度为什么是O(nlogn)
- LeetCode 148. Sort List--O(nlogn)时间复杂度和常数空间复杂度给链表排序
- 对链表排序 要求时间 复杂度为 O(nlogn) 空间复杂度为常量
- 排序的时间复杂度为O(n),空间复杂度为O(1)
- 时间复杂度为O(N),空间复杂度为O(1)的排序算法
- Java-时间复杂度为O(nlogn)的排序算法(快速排序, 归并排序, 堆排序, 希尔排序)
- LCS时间复杂度O(NlogN)
- 算法时间复杂度的表示法O(n²)、O(n)、O(1)、O(nlogn)
- 归并排序(时间复杂度O(nlgn)(最坏))
- Linux C 多文件编程
- day07-BootStrap与mysql回顾
- 《HBase权威指南》读书笔记 第八章:架构,HFile格式
- JAVA引用类型强制类型转换
- java对象引用
- 单链表的归并排序:时间复杂度O(nlogn),空间复杂度O(1)
- 挑战nbc (noip2016)膜你赛Day1提高组
- java实现中缀转后缀,后缀计算值
- Leading and Trailing LightOJ
- 数组 forEach() 与map()的区别
- 解决:org.hibernate.exception.ConstraintViolationException: could not execute statement
- 自主移动机器人--简介
- MySQL left join优化
- 使用javascript 获取 data- 自定义属性