/* Note:Your choice is C IDE */
#include "stdio.h"
#define MAXSIZE 5
void Merger(int am[],int bm[],int s,int m,int f)
{
int i,k,j=m+1;
i=k=s;
while(i<=m&&j<=f)
{
if(am<=am[j])
bm[k++]=am[i++];
else
bm[k++]=am[j++];
}
if(i<=m)
while(i<=m)
bm[k++]=am[i++];
else
while(j<=f)
bm[k++]=am[j++];
}
void MergerSort(int am[],int bm[],int s,int f)
{
int m;
if(s==f)
bm=am;
else{
m=(s+f)/2;
MergerSort(am,bm,s,m);
MergerSort(am,bm,m+1,f);
Merger(bm,am,s,m,f);
}
}
void main()
{
int a[MAXSIZE],b[MAXSIZE],i;
for(i=0;i<MAXSIZE;i++)
scanf("%d",&a);
MergerSort(a,b,0,MAXSIZE-1);
for(i=0;i<MAXSIZE;i++)
printf("%d ",a);
}
此程序为归并排序,输入5 4 3 2 1,输出2 1 5 4 3
本人能力有限,实在是调试不出来其中的Bug,请高手指教一下。
|