#include<stdio.h>
void mergeSort(int a[],int low,int mid,int high)
{
int b[10],i,j,k;
for(i=low;i<=high;i++)
{
b[i]=a[i];
}
for(i=low,j=mid+1,k=i;i<=mid&&j<=high;k++)
{
if(b[i]<=b[j])a[k]=b[i++];
else a[k]=b[j++];
}
while(i<=mid)a[k++]=b[i++];
while(j<=high)a[k++]=b[j++]; //开始无序了
}
void merge(int a[],int low,int high)
{
if(low<high)
{
int mid =(low+high)/2;
merge(a,low,mid);
merge(a,mid+1,high);
mergeSort(a,low,mid,high);
}
}
void main()
{
int i;
int a[8]={22,55,38,44,2,555,3,4};
merge(a,0,7);
for(i=0;i<=7;i++)
printf("%5d",a[i]);
}
归并排序
最新推荐文章于 2023-12-11 10:45:47 发布