我正在学习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
我多次查看代码。但是,我仍然无法找到错误的地方。你能帮帮我解决这个问题吗?
答案 0 :(得分:4)
if (j > max)
{
max = j;
}
在这里,您要比较指针,而不是值,更改为:
if (*j > *max)