Bubble Sort Display - PullRequest
       7

Bubble Sort Display

2 голосов
/ 08 марта 2012
#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, отсортируйте их и, наконец, отобразите отсортированный список. Проблема у меня в том, что я не могу вернуть вывод к работе. Я тестировал с последней строкой кода, но это не работает. Я не думаю, что моя сортировка испорчена либо. Как правильно отобразить этот отсортированный список?

Ответы [ 2 ]

3 голосов
/ 08 марта 2012

В пузырьковой сортировке есть хотя бы одна ошибка.Назначение на data[i+1] неверно.Должно быть:

data[i+1] = temp;
2 голосов
/ 08 марта 2012

Проблема в вашем «обмене».Должно быть:

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

Правка-Тестирование и отлично работает с коррекцией.

...