-1

问题:创建一个包含 10 个整数的数组。使用初始化程序用 {10,5,8,55,43,87,42,12,25,7} 填充数组数据。编写一个排序函数 sortArray 将调用一个交换函数。交换函数将按值调用。重写另一个将调用 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
Write a sort a function sortArray that will call a swap function. The swap function will be called by value.

是不可能的。按值调用的交换函数什么也不做。问题出在哪里?

于 2013-10-31T15:01:15.333 回答
1

我猜你的老师只是想让你通过这种类型的问题来理解按值传递和按引用传递之间的区别。所以现在你意识到按值传递不会改变调用函数的变量值。

于 2013-10-31T15:03:26.187 回答