#include <stdio.h>
#include <stdlib.h>
#define MAXN 10
void Merge(int array[],int start,int mid,int end)
{
int arra[MAXN];
int arrb[MAXN];
int lena = mid-start+1;
int lenb = end-mid;
int i,j,k;
for(i=0,j=start;i<lena;i++,j++)
arra[i]=array[j];
for(i=0,j=mid+1;i<lenb;i++,j++)
arrb[i] = array[j];
for(i=0,j=0,k=start;i<lena&&j<lenb;k++)
{
if(arra[i]<arrb[j])
array[k] = arra[i++];
else
array[k] = arrb[j++];
}
while(i<lena)
array[k++]=arra[i++];
while(j<lenb)
array[k++]=arrb[j++];
}
void MergeSort(int array[],int start,int end)
{
if(end > start)
{
int mid = (start+end)/2;
MergeSort(array,start,mid);
MergeSort(array,mid+1,end);
Merge(array,start,mid,end);
}
}
int main()
{
int i;
int array[10]={8,5,6,3,4,2,1,0,9,7};
MergeSort(array,0,9);
for(i=0;i<=9;i++)
printf("%d ",array[i]);
return 0;
}
归并排序
最新推荐文章于 2024-08-12 19:32:44 发布