-
问题
二分归并排序:对n个不同的数构成的数组A[1…n]进行排序,其中n=2^k -
解析
采用分治法。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。
3.设计
伪代码:
void merge(int a[],int start,int mid,int end){
left[mid-start+1];
right[end-mid];
for(i=start;i<=mid;++i){
left[leftt++]=a[i];
}
for(i=mid+1;i<=end;++i){
right[rightt++]=a[i];
}while(i<left长度 且 j<right长度){
if(left[i]<right[j]){
a[flag++]=left[i++];
}
else{
a[flag++]=right[j++];
}
}
while(i< left长度){
a[flag++]=left[i++];
}
while(j< right长度){
a[flag++]=right[j++];
}
}
mergesort(a[],start,end){
if(start
二分归并排序
最新推荐文章于 2022-04-29 02:12:18 发布