leetCode(5):Sort List
2015-06-17 09:45
357 查看
Sort a linked list in O(n log n)
time using constant space complexity.
分析:排序算法中,堆排序、归并排序、快速排序、希尔排序的时间复杂度是nlogn,堆排序和归并排序对下标依赖性比较强,比较适合顺序表的排序,对链表处理起来比较复杂。希尔排序用的比较少。所以我选择的是快速排序,结果是正确的,但时间超出限制了。如果有大神做过同样的题目,跪求告知解法~~~~
time using constant space complexity.
分析:排序算法中,堆排序、归并排序、快速排序、希尔排序的时间复杂度是nlogn,堆排序和归并排序对下标依赖性比较强,比较适合顺序表的排序,对链表处理起来比较复杂。希尔排序用的比较少。所以我选择的是快速排序,结果是正确的,但时间超出限制了。如果有大神做过同样的题目,跪求告知解法~~~~
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode* partion(ListNode* head,ListNode* start,ListNode* end,ListNode** newEnd) { int key=end->val; ListNode* pre=start; ListNode* behind=start; *newEnd=behind; while(pre!=end) { if(pre->val < key) { if(pre!=behind) { int tmp=pre->val; pre->val=behind->val; behind->val=tmp; } *newEnd=behind; behind=behind->next; } pre=pre->next; } int tmp=pre->val; pre->val=behind->val; behind->val=tmp; return behind; } void qSort(ListNode* head,ListNode* start,ListNode* end) { if(start!=end) { ListNode* newEnd=NULL; ListNode* mid=partion(head,start,end,&newEnd); if(mid!=end) qSort(head,mid->next,end); qSort(head,start,newEnd); } } ListNode* sortList(ListNode* head) { if(head==NULL) return NULL; ListNode* p=head; while(p->next) p=p->next; qSort(head,head,p); return head; } };
相关文章推荐
- 常用的算法函数
- opencv中ptr的使用
- leetCode(5):Sort List 分类: leetCode 2015-06-17 09:45 170人阅读 评论(0) 收藏
- 遇到The connection to adb is down, and a severe error has occured
- HTTP Status 500 - java.lang.ClassNotFoundException: org.apache.jsp.WEB_002dINF.pages.index.index_jsp
- VB实现禁用任务管理器的方法
- j2se学习笔记-Enum枚举类型
- C#实现ListView选中项向上或向下移动的方法
- input框只能输入大于0的数字,当值为0或者“”时会变成1
- JS学习笔记(一):关于{}和[]的使用
- android代码混淆之自定View问题
- 【转】KAFKA分布式消息系统
- Activity间数据传输
- 出大事了,据说微软要收购Docker?
- Linux基础(四):文本编辑器Vim
- UVa 11946 - Code Number
- Perl获取指定目录中的文件
- 【Selenium专题】WebDriver启动Chrome浏览器(一)
- 安卓登陆框记住密码和自动登录的实现
- 简介AngularJS的HTML DOM支持情况