这是代码
#include<stdio.h>
#include<conio.h>
int a[3];
int b[3];
void merge(int a,int mid,int b); //merge declaration
void mergesort(int i,int j)
{
int mid;
while(i<j)
{
mid=(i+j)/2;
mergesort(i,mid);
mergesort(mid+1,j);
}
merge(i,mid,j);
}
void merge(int c,int mid,int l) //c-first index,l,last index
{
int k=0;
int i=c;
int j=mid+1;
while((i<mid) && (j<l))
{
if(a[i]>a[j])
b[k++]=a[j++];
else
b[k++]=a[i++];
}
while(i<mid)
{
b[k++]=a[i++];
}
while(j<l)
b[k++]=a[j++];
}
int main()
{
int i;
a[0]=3;
a[1]=2;
a[2]=4;
mergesort(0,2);
for(i=0;i<3;i++)
printf("the nums are=%d\n",b[i]);
}
预期输出
the nums are=2
the nums are=3
the nums are=4
答案 0 :(得分:0)
a
和b
数组长度为3个成员,但在merge
中您使用实际值作为索引