我正在尝试编写一个程序来演示数组指针中的选择排序算法,但结果确实不正常。
我已经在多个编译器上运行了它,但它似乎并没有改变结果。
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