算法设计2:归并排序
- 思路分析:
- mergesort使用了分治思想+递归模式,将一个数组分成左右两个数组不断递归比较大小; 程序分为三个部分,两个函数和main主体;
MergeSort函数部分:(递归)
void MergeSort(int a[],int temp[],int p,int q){
if(p < q){
int r = (p+q)/2; // p r q 左 中 右
MergeSort(a,temp,p,r); //左边数组排序
MergeSort(a,temp,r+1,q); //右边数组排序
merge(a,temp,p,r,q); //合并左右两个数组
}
}
merge函数部分:
代码块里的筛选方式参照下图
void merge(int a[],int temp[],int p,int r,int q