leetcode 148 sort List
来源:互联网 发布:人工智能芯片企业 编辑:程序博客网 时间:2024/06/03 22:43
思路:
1.使用了quicksort,但效果并不好。 当序列很长,但元素的取值范围很窄时,或序列基本有序时,快排的时间复杂度退化为O(n*n)
2. 对应该题,更合理的是使用归并排序
代码:
/** * 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) { return quickSort(head); } ListNode *quickSort(ListNode* &head){ for (auto ptr = head; ptr; ptr = ptr->next){ if (!ptr->next) return head;// 序列有序时,停止快排,直接返回head else{ if (ptr->val > ptr->next->val) break; } } if (!head) return head; ListNode* le = new ListNode(0); ListNode* nle = new ListNode(0); ListNode* pivot = head; for (auto ptr = head->next; ptr;){ if (ptr->val <= pivot->val) insert(le, ptr); else insert(nle, ptr); } pivot->next =NULL; ListNode *newHead = quickSort(le->next); if (!newHead) newHead = pivot; else{ ListNode* le_tail = newHead; while(le_tail->next) le_tail = le_tail->next; le_tail->next = pivot; } pivot->next = quickSort(nle->next); return newHead; } inline void insert(ListNode* &head, ListNode* &ptr){ auto tmp = ptr->next; ptr->next = head->next; head->next = ptr; ptr = tmp; }};
0 0
- LeetCode(148)Sort List
- LeetCode: Sort List [148]
- LeetCode 148 Sort List
- [leetcode 148] Sort List
- [LeetCode 148]Sort List
- leetcode-148 Sort List
- Leetcode 148 Sort List
- LeetCode 148: Sort List
- 【leetcode 148 Sort List】
- Leetcode[148]-Sort List
- Sort List - LeetCode 148
- Leetcode# 148 Sort List
- Leetcode # 148 Sort List
- LeetCode(148) Sort List
- leetcode 148: Sort List
- [Leetcode]#148 Sort List
- 148 Sort List [Leetcode]
- LeetCode 148 Sort List
- bzoj2870 边分治
- 第一行代码Android学习(二)
- HTML5中的拖放
- 纪中2016.8.11比赛不明总结
- POJ 3229 The Best Travel Design
- leetcode 148 sort List
- poj 1195 二维树状数组(单点更新)
- javase重新开始系列之网络编程
- 汇编语言基础-寄存器(一)
- Android 应用 重启的方法
- 【乔布斯2001年接受日本采访】总结
- [模板]LCA最小公共祖先(DFS+RMQ)
- Android学习第十天-----本地拒绝服务漏洞之一
- 在C#中实现BigEndian的数字