【发布时间】:2015-10-18 08:13:40
【问题描述】:
我刚刚和我的导师争论冒泡排序,他告诉我冒泡排序被称为两个 for 循环,一个嵌套在另一个循环中。在我开始分配之前没有给出,所以没关系,但是这个冒泡排序代码有什么问题:
int num = 0, i = 0;
bool go = true;
while (i < size - 1){
if (array[i] > array[i + 1]){
num = array[i];
array[i] = array[i + 1];
array[i + 1] = num;
go = false;
}
i++;
if (i >= size - 1 && go == false){
i = 0;
go = true;
}
}
for (int i = 0; i < size; i++){
cout << array[i];
}
它和冒泡排序不一样吗?
int i, j;
bool flag = true;
int temp;
int numLength = size;
for (i = 1; (i <= numLength) && flag; i++)
{
flag = false;
for (j = 0; j < (numLength - 1); j++)
{
if (array[j + 1] < array[j])
{
temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
flag = true;
}
}
}
for (int i = 0; i < size; i++){
cout << array[i];
}
return;
谢谢!
【问题讨论】:
-
我输入了错误的代码,抱歉现在是正确的!
-
好吧,也许你可以称之为冒泡排序,没有内部循环! :P 但是,内部循环正在为您做的事情现在您正在使用
i、go和一个额外的if条件.. -
理论上,任何东西都可以重写为一个循环。 (因为那是图灵完备的)但这并不意味着它看起来会很漂亮。
-
我知道这不是“漂亮”,但没有提供使用两个嵌套循环的信息并要求某人制作一个执行冒泡排序的程序,我的回答不正确吗?跨度>
-
这是两个循环,而不是两个 for 循环。
标签: c++ bubble-sort