int arrTmp[100]; //定义一个临时数组
//归并两个分段的结果,两个分段是数组中的[low,mid]以及[mid+1,high]中的元素
void Merge(int arr[],int low,int mid,int high){
int i=low,j=mid+1,k=low; //I、J、K分别指向待归并的两段以及临时数组
while(i<=mid&&j<=high){
if(arr[i]<=arr[j]){
arrTmp[k++]=arr[i++];
}else{
arrTmp[k++]=arr[j++];
}
}
while(i<=mid){
arrTmp[k++]=arr[i++];
}
while(j<=high){
arrTmp[k++]=arr[j++];
}
for(i=low;i<=high;i++){
arr[i]=arrTmp[i];
}
}
void MergeSort(int arr[],int low,int high){
if(low<high){
int mid=(low+high)/2;
MergeSort(arr,low,mid);
MergeSort(arr,mid+1,high);
Merge(arr,low,mid,high);
}
}
[算法]归并排序
最新推荐文章于 2025-08-14 22:07:01 发布