归并排序
归并排序的基本思想是首先将 a[0···n-1] 看成n个长度为1的有序表,将相邻的k(k>=2)个有序子表成对归并,得到n/k个长度为k的有序子表;然后再将这些有序子表继续归并,得到n/k^2个长度为k^2的有序子表,如此反复进行下去,最后得到一个长度为n的有序表。若k=2,即归并是在相邻的两个有序子表中进行的,称为二路归并排序。若k>2,即归并操作在相邻的多个有序子表中进行,则叫多路归并排序。我们仅讨论二路归并排序。
分解—>子问题求解—>合并
代码实现
1 | #include<iostream> |