【发布时间】:2018-09-02 06:10:23
【问题描述】:
我正在学习 c++,但我正在阅读一本在学校推荐给我的糟糕书。它有很多错误,但我发现了程序逻辑错误的错误。您能否检查一下这是否真的是一个错误或者我理解错了?
根据书上冒泡排序的代码如下-
#include <iostream.h>
main()
{
int num, i, j, temp;
cin >> num;
int item[num];
for (i = 0; i < num; i++)
cin >> item[i];
for (i = 0; i < num -1; i++)
for ( j = i+1; j < num; j++)
if (item[i] > item[j]){
temp = item[i];
item[i] = item[j];
item[j] = temp;
}
我的想法 - 我认为这是线性排序而不是冒泡排序,因为在这里我们将一个元素与数组中它下面的所有元素进行比较,如果发现一个较小的元素交换它们。
根据我的说法,冒泡排序的正确代码应该是这样的
void bubble_sort_bottomsup(int a[], int n)
{
//implementing bubble sort
//a[] is the array to be sorted and n is the total number of elements in that array
for (int i = 1; i<n; i++)
{
for (int j = n-1; j>0; j--)
{
if (a[j] < a[j-1])
{
int temp;
temp = a[j-1];
a[j-1] = a[j];
a[j] = temp;
}
}
}
}
我说的对吗??我是 C++ 新手,这本书在我的国家得到了广泛的关注,所以不太确定这本书的代码是否真的存在逻辑缺陷。我学校的老师也一直说书中给出的冒泡排序代码是正确的。
所以请帮帮我。
【问题讨论】:
-
你确定第一段代码是正确的吗?它似乎没有从 main 关闭 {。
-
我没有完成该块,因为我只是想显示排序部分。
-
#include <iostream.h> main()-- 那本书一定是折角,书页泛黄。像这样的代码已经过时了 20 年了。 -
冒泡排序应该交换相邻的对。第一个代码没有这样做。
-
@n.m 直到学生们收到的书在打开时分崩离析,事情才可能改变。
标签: c++ arrays sorting bubble-sort