2012-03-08 3 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

버블 정렬에 하나 이상의 오류가 있습니다. data[i+1]으로 지정이 잘못되었습니다. 다음과 같아야합니다.

data[i+1] = temp; 
+0

7 초 남았습니다! ;) – prelic

+0

아. 나는 이것에 너무 피곤했다. 더 조심스럽게 다뤄야 했어. 간단한 답변 주셔서 감사합니다. – user1234259

+0

@prelic : 재밌 네요. 실제로 iPod touch에서 답변하려고했지만 너무 느립니다. 나는 그 노트북을 열어서 (분명히) 7 초를 남겨두고 질문을 찾는다. –