问题
用二分归并排序法对n个不同的数构成的数组A[1…n]进行排序,其中n=2^k。
问题解析
1.将数组对半划分;
2.分别对左半部分和和右半部分进行排序;
3.通过递归不断将分割过的数组进行划分直到不可再分;
步骤如下:
核心代码
void merge(int arr[],int left,int right) {
int middle = (left + right) / 2;
if (left < right) {
merge(arr, left, middle);
merge(arr, middle + 1, right);
mergeSort(arr,left,middle,right);//排序后复制到原数组
}
}