这是我第一次实际发送一个我在网络上或网站上找不到答案的问题。这是一项大学作业,通过合并排序对指针数组进行排序,指针将指向作为排序值给出的数组(排序指针指向的位置而不是 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);
}
我不明白为什么更改 temp 指向的地址(作为要排序的最小数组)是不够的。任何人都可以帮助我如何解决这个问题?先谢谢了。