1.问题
- 使用二分归并排序算法,对n个不同的数构成的数组A[1…n]进行排序,其中n=2^k
2.解析
- 二分归并排序是一种分治算法。这个算法不断地将一个数组分为两部分,分别对左子数组和右子数组排序,然后将两个数组合并为新的有序数组。
- 算法步骤如下:
(1) 分解:分解待排序的n个元素的数组成各具n/2个元素的两个子数组(把大问题分解成规模较小的子问题)
(2) 解决:使用归并排序递归地排序两个子序列(把子问题独立求解的过程)
(3) 合并:合并两个已排序的子序列以产生排序的答案(把所有子问题综合解的过程)
当待排序的数组长度为1时,递归“开始回升”,在这种情况下不要做任何工作,因为长度为1的每个数组都已排好序。
3.设计
int Merge(int a[],int low, int mid, int high)// 合并函数
{
int b[8];
int j