#include<stdio.h>
#include<stdlib.h>
#include<math.h>
void merge(int A[],int low,int mid,int high){
int *B=(int *)malloc((high+1)*sizeof(int));
int i,j,k;
for(int s=0;s<=high;s++){
B[s]=A[s];
}
for(i=low,j=mid+1,k=i;i<=mid&&j<=high;k++){
if(B[i]>B[j]){
A[k]=B[j++];
}
else{
A[k]=B[i++];
}
}
while(i<=mid){
A[k++]=B[i++];
}
while(j<=high){
A[k++]=B[j++];
}
}
void MergeSort(int A[],int low,int high){
if(low<high){
int mid=(low+high)/2;
MergeSort(A,low,mid);
MergeSort(A,mid+1,high);
merge(A,low,mid,high);
}
}
void Printf(int A[],int n){
for(int i=0;i<n;i++){
printf("%d ",A[i]);
}
}
int main(){
int A[11]={6,7,8,5,1,4,2,3,15,7,6};
int n=11;
MergeSort(A,0,n-1);
Printf(A,n);
return 0;
}
归并排序
最新推荐文章于 2024-06-02 13:32:49 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)