我试图写一个程序来演示数组指针中的选择排序算法,但结果真的不对劲。
我已经在多个编译器上运行了它,但它似乎没有改变结果。
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;
}
}
我希望输出是一个排序数组和原始数组,但排序数组似乎排序不正确。
发布于 2019-08-16 05:12:47
问题出在下面这一行:
if (*(arr[i]) < *MinEl);
末尾的;
使代码变得毫无价值。也许你会得到一些警告。
下一个块被无条件地执行。
无论如何,使用int *arr[]
对我来说似乎很奇怪,因为您通常使用int arr[]
。
已更正工作版本:https://ideone.com/2wZXVs
https://stackoverflow.com/questions/57514788
复制相似问题