这是我第一次发送一个我无法在网上或网站上找到答案的问题。 这是一个通过合并排序对指针数组进行排序的大学赋值,指针将指向作为排序值给出的数组(指针指向的位置,而不是int数组)。
这是我的函数代码:
void merge(int *a,int p,int q,int r)
{
int i=p,j=q+1,k=0;
int** temp=(int**)calloc(r-p+1, sizeof(int));
int tempPtr;
while ((i<=q)&& (j<=r))
if(a[i]<a[j])
temp[k++]=&a[i++];
else
temp[k++]=&a[j++];
while(j<=r) // if( i>q )
temp[k++]=&a[j++];
while(i<=q) // j>r
temp[k++]=&a[i++];
for(i=p,k=0; i<=r; i++,k++) // copy temp[] to a[]
a[i]=*temp[k];
free(temp);
}
我不明白为什么更改临时指向的地址(作为要排序的最小数组)是不够的。 有人可以帮我解决这个问题吗? 谢天谢地。