二分归并排序(C语言)
问题
二分归并排序:对n个不同的数构成的数组A[1…n]进行排序,其中n=2^k
解析
二分归并排序是分治思想的点醒例子,其原理是将一个长串数字分解成多个短串数字,然后将短串数字排序后,合并成新的已经有序的长串。分解成短串使用递归的方法,我们只用知道先把分左边,再分右边,每次对半分即可。
根据分治思想,二分归并排序分为以下三个步骤:
- 把大问题划分成规模较小的子问题。
- 把子问题独立求解的过程。
- 把所有子问题综合解的过程。
二分归并排序
分解后的子串开始归时,用一个新的数组来存放结果,操作如下图所示:
核心代码:
void mergeSort(int arr[],int start,int end){
if (start>=end){
return;
}
int mid = (start+end