1.问题.
二分归并排序:对n个不同的数构成的数组A[1…n]进行排序,其中n=2^k
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);//排序后复制到原数组
}
}
4.分析
O(n)=nlog n
5.源码
https://github.com/Lillyooo/-Lily/blob/main/merge.cpp