我的代码排序数组有什么问题吗?

时间:2014-08-08 12:22:38

标签: c arrays sorting

我正在学习c语言,我写了一个这样的函数来排序数组。

void sort(int a[], int n)
{
    for (int *i = a; i < a + n - 1; i ++)
    {
        int *j, temp, *max = i;

        for (j = i + 1; j < a + n; j ++)
        {
            if (j > max)
            {
                max = j;
            }
        }
        if (*max != *i)
        {
            temp = *i;
            *i = *max;
            *max = temp;
        }
    }

    return;
}

当我使用该函数对这样的数组进行排序时:

int arr[10] = {12, 34, 5, 689, -43, 56, -21, 0, 24, 65};
sort(arr, 10);

它给出了错误的答案:

12   34   5    689  -43  56   -21  0    24   65   
65   12   34   5    689  -43  56   -21  0    24

我多次查看代码。但是,我仍然无法找到错误的地方。你能帮帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:4)

    if (j > max)
    {
        max = j;
    }

在这里,您要比较指针,而不是值,更改为:

    if (*j > *max)