选择排序算法生成无序结果



我正在尝试编写一个程序来演示数组指针中的选择排序算法,但结果确实不正常。

我已经在多个编译器上运行了它,但它似乎并没有改变结果。

void SelectionSort(int *arr[], int size)
{
int start, minI;
int *MinEl;
for (start = 0; start < (size - 1); start++)
{
minI = start;
MinEl = arr[start];
for (int i = start + 1; i < size; i++)
{
if (*(arr[i]) < *MinEl);
{
MinEl = arr[i];
minI = i;
}
}
arr[minI] = arr[start];
arr[start] = MinEl;
}
}

我希望输出是排序数组和原始数组,但排序后的数组似乎排序不正确。

问题出在这一行:

if (*(arr[i]) < *MinEl);

最后的;使该代码毫无价值。可能你会得到一些警告。

下一个块无条件执行。

无论如何,使用int *arr[]对我来说似乎很奇怪,您通常使用int arr[].

工作版本已更正:https://ideone.com/2wZXVs

最新更新