C程序通过Merge Sort对指针进行排序

时间:2013-11-10 11:12:36

标签: c arrays pointers mergesort

这是我第一次发送一个我无法在网上或网站上找到答案的问题。 这是一个通过合并排序对指针数组进行排序的大学赋值,指针将指向作为排序值给出的数组(指针指向的位置,而不是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);
}

我不明白为什么更改临时指向的地址(作为要排序的最小数组)是不够的。 有人可以帮我解决这个问题吗? 谢天谢地。

0 个答案:

没有答案