【发布时间】:2012-08-28 21:14:40
【问题描述】:
我要开始新的问题。我昨天提出了这个问题,想知道我的程序有什么问题。该程序在下面给出,大家指出,下面的程序只进行一次排序,并且还需要一个外循环。那个时候我就好喜欢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();
}
我认为带有气泡条件的唯一循环应该进行排序。看下面的程序循环:
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 语句主体中的操作。然后 i 将增加 1(i++)。然后在下一次迭代中,比较的值将是 number[1] 和 number[2]。那为什么它没有发生并且循环仅在通过后退出?换句话说,可能是我想问 IF 语句不会在 for 循环中重复吗?在我看来确实如此。我非常感谢您的帮助和意见,我的问题可能很小,但这就是我的进步。
【问题讨论】:
-
这是一个非常基础的排序问题,我给你一个提示:把最小值放在最后一个位置[9]。它将被比较并移动到上一个位置 [8],然后您的循环结束。排序还没有完成。
-
非常简单明了的例子。谢谢
标签: c++ algorithm sorting bubble-sort