下面是实现代码
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void Merge(int stu[],int s,int m,int n)
{//归并排序--归并
int i,j,k;
int temp[100];
i=s;j=m+1;k=0;
while(i<=m && j<=n)
{
if(stu[i]<stu[j])
temp[k++]=stu[i++];
else
temp[k++]=stu[j++];
}
while(i<=m)
temp[k++]=stu[i++];
while(j<=n)
temp[k++]=stu[j++];
for(i=s;i<=n;i++)
{
stu[i]=temp[i-s];
}
}
void MergeSort(int stu[],int low,int high)
{//归并排序--二分
int mid;
if(low<high){
mid=(low+high)/2;
MergeSort(stu,low,mid);
MergeSort(stu,mid+1,high);
Merge(stu,low,mid,high);
}
}
int main(){
int i,n,li[100];
printf("输入排序数个数\n");
scanf("%d",&n);
printf("输入要排序的数\n");
for(i=0;i<n;i++){
scanf("%d",&li[i]);
}
MergeSort(li,0,n-1);
printf("排序后结果为\n");
for(i=0;i<n;i++){
printf("%d ",li[i]);
}
return 0;
}
下面的运行结果