排序
归并排序
思想
- 将 n 个元素排序,若 n = 1,算法终止
- 否则,将这一个元素集合分割成两个,或更多个子集合
- 将每个子集合分别排序
- 将排序好的子集合归并为一个集合
子集的划分
- middle = (left + right) /2
- mergeSort(a,left,middle)
- mergeSort(a,middle+1,right)
- 消除递归,改善性能
两个区间归并的实现:
一趟归并的实现
归并排序是稳定排序
自然归并排序
- 首先将程序中的有序段挑出来,对已经有序的子序列进行归并
快速排序
快速排序不稳定
时间复杂度,最坏
O
(
n
2
)
O(n^2)
O(n2),最好
O
(
n
l
o
g
n
)
O(nlogn)
O(nlogn)