-1

質問: 10 個の整数の配列を 1 つ作成します。初期化子を使用して、配列データに {10,5,8,55,43,87,42,12,25,7} を入力します。スワップ関数を呼び出すソート関数 sortArray を記述します。swap 関数は値によって呼び出されます。swapByRef 関数を呼び出す別のソート関数 sortArray2 を書き直します。

私のコード:

void swap (int x, int y)
{
    int temp = x;
    x = y;
    y = temp;
}

void sortArray (int A[], int n)
{
    int i,j,minIndex,temp;

    for (i=0 ; i<n-1 ; i++)
    {
        minIndex = i;
        for (j=i+1 ; j<n ; j++)
            if (A[j] < A[minIndex])
                minIndex = j;
        swap (A[i],A[minIndex]);
    }
}

void swapByRef (int &x, int &y)
{
    int temp = x;
    x = y;
    y = temp;
}

void sortArray2 (int A[], int n)
{
    int i,j,minIndex;

    for (i=0 ; i<n-1 ; i++)
    {
        minIndex = i;
        for (j=i+1 ; j<n ; j++)
            if (A[j] < A[minIndex])
                minIndex = j;
        swapByRef (A[i], A[minIndex]);
    }
}

int main ()
{
        int A[10] = {10,5,8,55,43,87,42,12,25,7};
        sortArray (A,10);
        for (int i=0;i<10;i++)
        cout<<A[i]<<endl;
        int B[10] = {10,5,8,55,43,87,42,12,25,7};
        sortArray2 (B,10);
        for (int i=0;i<10;i++)
        cout<<A[i]<<endl;

    system ("PAUSE");
    return 0;
}

sortArray は配列をソートしません。このコードを書くにはどうすればよいですか?

4

2 に答える 2

1

先生は、この種の質問を通じて、値渡しと参照渡しの違いを理解してほしいだけだと思います。これで、値渡しによって呼び出し関数の変数値が変更されないことがわかりました。

于 2013-10-31T15:03:26.187 に答える