148
Sort a linked list in O(n log n) time using constant space complexity.
Example 1:
1 | Input: 4->2->1->3 |
Example 2:
1 | Input: -1->5->3->4->0 |
思路: O(nlogn)采用归并排序
总结,归并排序的本质是两个有序数组排序
1 |
|
知识点
1 | def sortList(self, head): |
- map函数的原型是map(function, iterable, …),它的返回结果是一个列表,函数式编程
1 | def mul(x): |
- (*)号操作符
1 | def add(a,b): |
- 排序时间复杂度
排序方法 | 平均时间 | 最好时间 | 最坏时间 |
---|---|---|---|
桶排序(不稳定) | O(n) | O(n) | O(n) |
基数排序(稳定) | O(n) | O(n) | O(n) |
归并排序(稳定) | O(nlogn) | O(nlogn) | O(nlogn) |
快速排序(不稳定) | O(nlogn) | O(nlogn) | O(n^2) |
堆排序(不稳定) | O(nlogn) | O(nlogn) | O(nlogn) |
希尔排序(不稳定) | O(n^1.25) | ||
冒泡排序(稳定) | O(n^2) | O(n) | O(n^2) |
选择排序(不稳定) | O(n^2) | O(n^2) | O(n^2) |
直接插入排序(稳定) | O(n^2) | O(n) | O(n^2) |
- 归并排序
思路:分解->两个子序列排序
4.1. 如何分解,及如何递归的解决这个问题
4.2. 两个子序列排序