2012-03-08 47 views
2
#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函数,对它们进行排序并最终显示排序列表。我遇到的问题是我没有得到输出回来工作。我用最后一行代码进行了测试,但这不起作用。我不认为我的排序也搞乱了。我如何正确显示这个排序的列表?Bubble Sort Display

+0

您显示输出的方式很好。问题必须在泡沫排序 – prelic 2012-03-08 02:42:10

回答

2

问题是你的“交换”。它应该是:

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

编辑测试和工作正常与更正。

3

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

data[i+1] = temp; 
+0

由7秒钟! ;) – prelic 2012-03-08 02:45:46

+0

啊。我猜这太累了。应该更仔细地通过它。感谢您的简单答案。 – user1234259 2012-03-08 02:46:52

+0

@prelic:这很有趣。我实际上试图在iPod touch上回答它,但实际上它太慢了。我设法打开笔记本电脑,发现问题(显然)需要7秒钟才能完成。 – 2012-03-08 02:47:23