gpt4 book ai didi

c++ - 为什么我的自适应选择排序算法在C++中不起作用

转载 作者:行者123 更新时间:2023-12-02 10:13:06 24 4
gpt4 key购买 nike

我有一年多以前在Python here中编写的用于选择排序的代码,但是当我尝试使其适应C++时,它就完全停止工作了,并且该算法在逻辑上完全相同,对算法进行了不同的排序并打印出来一团糟。

void SelectionAscending2(int array[], int numItems)
{
int count;
int temp;
int minimum;
int Pass = 0;
//while (Pass < numItems)
for (int i = Pass; i < numItems; i++)
{
count = Pass + 1;
minimum = Pass;
//while (count <= numItems)
for (int j = count; j <= numItems; j++)
{
if (array[count] < array[minimum])
{
minimum = count;
count += 1;
}
}
temp = array[Pass];
array[Pass] = array[minimum];
array[minimum] = temp;
Pass += 1;
}
for (int i = 1; i < numItems; i++)
{
cout << array[i] << ", ";
}
}

int main()
{
int myArray[8] = { 4, 2, 1, 3, 6, 5, 8, 7 };

int length = sizeof(myArray) / sizeof(myArray[0]);
SelectionAscending2(myArray, length);
}
这段代码在python中工作得很好,但是在C++中,它改为输出: 2, 3, 4, 5, 6, 0, 7, 我已经为此苦苦挣扎了三天,但我所做的一切都没有奏效。

最佳答案

实际上,您已经从python代码中转移了一些。

  • 在python代码中,您已经设置了length of array (numItems)actual length - 1,但在这里您已将length (numItems)actual length相同。
  • 而且在打印时,您也从i = 1开始打印。这就是为什么
    您的代码无法正常工作。

  • 因此,您可以进行以下更改(方法之一):
  • 将第二个j <= numItems for循环更改为j < numItems
  • 使用last for循环打印数组时,从i = 0开始
  • 关于c++ - 为什么我的自适应选择排序算法在C++中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62846748/

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