0

ウェブやサイトで答えが見つからなかった質問を実際に送信したのはこれが初めてです。これは、ポインターがソートされた値として指定された配列を指すマージソートを介してポインターの配列をソートするための大学の課題です (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 が指すアドレスを (ソートする最小の配列として) 変更するだけでは不十分な理由がわかりません。どうすればこれを解決できますか?先に感謝します。

4

0 に答える 0