gpt4 book ai didi

c++ - 我的选择排序代码是否存在导致它跳过数组中的元素的问题?

转载 作者:行者123 更新时间:2023-11-30 03:14:17 24 4
gpt4 key购买 nike

在 C++ 家庭作业中执行选择排序时,我使用的数组在将数据排序到正确位置时出现问题。我特别困惑,因为在上周的作业中,我能够以正确的顺序同时成功地对两个数组进行排序——但是,本周,涉及到一些指针,尽管我很确定这不会影响一种仅引用元素本身的排序。

到目前为止,我已经尝试在许多不同的输入顺序中输入以下数据:

1000
500
560
750
1200

加载似乎很好地引用了实际的输入数据,并且排序似乎正确地对一些数字进行了排序(例如,大多数时候将 500 放在第一位),但我显然做错了什么因为它无法排序。我将在下面展示一些条目和输出。

这是我选择排序本身的代码:

void selectionSort(int rentArray[], int arrayElements)
{
int minSort = 0;
int sortHold;
sortHold;

for (int x = 0; x < arrayElements - 1; x++)
{
sortHold = rentArray[x];
for (int y = x + 1; y < arrayElements; y++)
{
if (rentArray[y] < sortHold)
{
minSort = y;
sortHold = rentArray[y];
}
}
if (minSort != x)
{
sortHold = rentArray[x];
rentArray[x] = rentArray[minSort];
rentArray[minSort] = sortHold;

}

}

}

自然地,我希望输出从任何东西开始,将数组排序为 [500, 560, 750, 1000, 1200],而不是它的结果。部分截图:

https://i.imgur.com/evATWAy.png https://i.imgur.com/dzcZiAl.png


编辑:感谢@Akiva 和@6502 的帮助!

将快速 minSort = x; 放入 sortHold = rentArray[x]; 下的函数中解决了问题。

最佳答案

如果没有元素低于 sortHold,您仍然会检查 minSort 是否与 x 不同,但它将是 minSort 来自上一次迭代,使您的代码进行了错误的交换。

关于c++ - 我的选择排序代码是否存在导致它跳过数组中的元素的问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57939201/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com