gpt4 book ai didi

c++ - 为什么冒泡排序需要嵌套循环?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:49:34 24 4
gpt4 key购买 nike

我要开始新的问题了。我昨天提出了这个问题,想知道我的程序有什么问题。该程序在下面给出,你们指出下面的程序只进行一次排序并且还需要一个外部循环。那时候我就好似OK。但是,当我再次查看程序时,我感到很困惑,需要问为什么我们还需要外循环来进行排序,因为只有一个循环可以进行排序(在我看来)。首先看下面的程序,然后我在程序末尾展示我的逻辑。

#include <iostream.h>
#include <conio.h>

using namespace std;

main()
{

int number[10];
int temp = 0;
int i = 0;

cout << "Please enter any ten numbers to sort one by one: "
<< "\n";

for (i = 0; i < 10; i++)
{
cin >> number[i];
}

i = 0;

for (i = 0; i < 9; i++)
{

if (number[i] > number[i + 1])
{
temp = number[i + 1];
number[i + 1] = number[i];
number[i] = temp;
}
}
i = 0;
cout << "The sorted numbers are given below:"
<< "\n";

for (i = 0; i < 10; i++)
{
cout << number[i] << "\n";
}

getch();
}

我认为带有冒泡条件的 ONLY 循环应该进行排序。看下面的程序循环:

for (i=0;i<9;i++)
if(number[i]>number[i+1])
{
temp=number[i+1];
number[i+1]=number[i];
number[i]=temp;

}

现在我解释一下我在想这个循环“应该”做什么。它会首先比较 number[0] 和 number[1]。如果满足条件,它将执行 IF 语句主体中的操作。然后我将增加 1(i++)。然后在下一次迭代中比较的值将是 number[1] 和 number[2]。那为什么它没有发生并且只通过后循环退出?换句话说可能是我想问 IF 语句不会在 for 循环中重复自身?在我看来确实如此。我非常感谢您的帮助和意见,我的问题可能很小,但这就是我进步的方式。

最佳答案

让我举个例子让我们只取 3 个数字。所以你输入

13, 3 ,1 

现在你开始整理你是如何做到的。所以它比较 13 和 313 > 3 所以切换它们。现在我们有了。

3, 13, 1

现在它将按照您所说的进行比较,下一对 = 13 和 113 > 1 所以新的顺序是

3, 1, 13

现在你的循环结束了,你错过了比较 3 和 1实际上第一个循环只对最大的数字进行排序!

关于c++ - 为什么冒泡排序需要嵌套循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12259622/

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