归并排序的基本思想:将两个有序数列合并成一个有序数列,具体实现包括“从上往下”和“从下往上”2种方式。
时间复杂度:O($N\log{N}$)。
空间复杂度:O($N$)。(临时数组)
归并排序是稳定的。
- 从下往上的归并排序:将待排序的数列分成若干个长度为1的子数列,然后将这些数列两两合并;得到若干个长度为2的有序数列,再将这些数列两两合并;重复下去直到合并成一个数列为止。
- 从下往上的归并排序:
- 分解:将当前区间一分为二,即求分裂点 mid = (low + high)/2;
- 求解:递归地对两个子区间a[low…mid] 和 a[mid+1…high]进行归并排序。递归的终结条件是子区间长度为1。
- 合并:将已排序的两个子区间a[low…mid]和 a[mid+1…high]归并为一个有序的区间a[low…high]。
|
|