2012-03-08 6 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] << ", "; 
} 

プログラムはとてもシンプルです。配列に10個の値を入力します。それらを未分類で表示します。それらをbubbleSort関数に送り、ソートしてソートされたリストを表示します。私が抱えている問題は、出力を元に戻すことができないということです。私は最後のコード行でテストしましたが、うまくいきません。私の並べ替えもやっかいだとは思わない。この並べ替えられたリストを正しく表示するにはどうすればよいですか?バブルソート表示

+0

出力を表示する方法は問題ありません。問題はバブルソートでなければならない – prelic

答えて

2

問題は、あなたの 'スワップ'です。それは次のようにする必要があります。

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

編集が正常に行われています。

3

バブルソートで少なくとも1つのエラーがあります。 data[i+1]への割り当てが正しくありません。それはする必要があります:

data[i+1] = temp; 
+0

7秒であなたを得た! ;) – prelic

+0

ああ。これはあまりにも疲れていると思います。より慎重にそれを通過している必要があります。簡単な答えをありがとう。 – user1234259

+0

@prelic:面白いです。私は実際にはiPod touchでそれに答えようとしていたが、それは遅すぎる。私はラップトップを開いて、(明らかに)余分な7秒で質問を見つけることができた。 –