【问题标题】:Bubble Sort Display冒泡排序显示
【发布时间】:2012-03-25 14:43:38
【问题描述】:
#include <iostream>
#include <string>

using namespace std;

void bubbleSort(int data[], int n);

int main()
{
cout << "Enter ten unsorted integers..." << endl;

int a[10];
for (int i = 0; i < 10; ++  i)
{
    cout << "[" << i << "] = ";
    cin >> a[i];
}

cout << endl << "Unsorted List = ";
    for (int i = 0; i < 10; ++i)
    cout << a[i] << ", ";

cout << endl;

cout << "Sorting..." << endl;
cout << "Sorted List = ";
bubbleSort(a, 10);
}

void bubbleSort(int data[], int n)
{
int j = 0;
bool nextEnd = true;
while (nextEnd)
{
    nextEnd = false;
    ++j;
    for (int i = 0; i < n - j; ++i) 
    {
        if (data[i] > data[i+1]) 
        {
            int temp = data[i];
            data[i] = data[i+1];
            data[i+1] = data[i];
            nextEnd = true;
        }
    }
}

for (int i = 0; i < 10; ++i)
cout << data[i] << ", ";
}

这个程序真的很简单。将十个值输入到数组中。显示它们未排序。将它们发送到bubbleSort函数中,对它们进行排序,最后显示排序后的列表。我遇到的问题是我没有让输出恢复工作。我用最后一行代码进行了测试,但这不起作用。我也不认为我的排序搞砸了。如何正确显示此排序列表?

【问题讨论】:

  • 你显示输出的方式很好。问题一定出在冒泡排序中

标签: c++ bubble-sort


【解决方案1】:

冒泡排序中至少有一个错误。 data[i+1] 的分配不正确。应该是:

data[i+1] = temp;

【讨论】:

  • 啊。我想这太累了。应该更仔细地经历它。感谢您的简单回答。
  • @prelic:这很有趣。我实际上试图在 iPod touch 上回答它,但它太慢了。我设法打开笔记本电脑并在(显然)7 秒内找到问题。
  • 如果是输出问题,输出与排序问题相比如何?我猜答案差别很大,但一般来说?
【解决方案2】:

问题在于您的“交换”。应该是:

int temp = data[i];
data[i] = data[i+1];
data[i+1] = temp;

经过编辑测试,修正后工作正常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-09
    • 2015-09-12
    • 1970-01-01
    • 2014-03-26
    • 2015-03-06
    • 2018-04-18
    • 2018-11-13
    • 2011-08-04
    相关资源
    最近更新 更多