Catalogue
概述
归并排序(Merge-Sort),由冯诺依曼于 1945 年发明,是分治法(Divide and Conquer)的经典案例。
JavaScript 实现
代码思路比较清晰:
- 首先,需要一个执行合并有序数组的函数(将两个有序表合并成一个有序表,称为二路归并)。
- 然后,对需要排序的数组进行拆分,分别对左右两个子数组进行归并排序,然后合并。这样就形成了递归
1 | var A = [1, 3, 5, 7, 9, 10, 87]; |
算法复杂度估算
每次的合并,复杂度都是 O(N)。由于是按照二分进行拆分的,那么像二叉树一样,共有 log2N 层。于是本算法的时间复杂度为 O(NlogN)。