1.问题
二分归并排序:对n个不同的数构成的数组A[1…n]进行排序,其中n=2^k
2.解析
运用递归,先将数组A从对半分开,然后分别对分开后的数组再次执行分开操作,直到子数组
只有一个元素,然后再将子数组按顺序合并。这里用到了分而治之的思想,先将问题分成几个部分,简化他,然后再逐个解决。
3.设计
mergeSirt(){
int left = 0;
int right = arr.length-1;
int mid = (left + right)/2;
将left 到 mid 的数据放入子数组son1
将 mid 到 right 的数据放入子数组son2
mergeSort(son1)
mergeSort(son2)
调用merge函数合并数组
}
merge(){
比较两个子数组,每个数组第一个元素比较后,小的放入新数组
}
4.分析
o(nlogn).
5.源码
https://github.com/QiuYuSY/AlgorithmWork/tree/master/src/xsr/fourthLesson