代码如下:
找了好久,实在找不出哪里的问题:
#include<stdio.h>
void merge(int s[],int a[],int start,int mid,int end)
{
int i=start;
int j=mid+1;
int k=start;
while(i<=mid && j<=end) {
if(a[i]<a[j]) {
s[k++]=a[i++];
} else {
s[k++]=a[j++];
}
}
if(i<=mid) {
s[k++]=a[i++];
}
if(j<=end) {
s[k++]=a[j++];
}
}
void merge_sort(int s[],int a[],int start,int end)
{
int t[20];
int mid;
if(start==end) {
s[start]=a[start];
} else {
mid=(start+end)/2;
merge_sort(t,a,start,mid);
merge_sort(t,a,mid+1,end);
merge(s,t,start,mid,end);
}
}
int main()
{
int i;
int n=5;
int a[n],s[n];
printf("Enter %d nimbers: \n",n);
for(i=0;i<n;i++) {
scanf("%d",&a[i]);
}
printf("\n");
merge_sort(s,a,0,n-1);
printf("The sorted order is: \n");
for(i=0;i<n;i++) {
printf("%5d",s[i]);
}
printf("\n");
return 0;
}