Bubble sort в c ++ (asc) - PullRequest
       6

Bubble sort в c ++ (asc)

0 голосов
/ 31 октября 2018

Я видел учебник по сортировке массивов по пузырькам.

Вот код, который был использован:

    int main()
    {
        int numbers[5];
    int asc;

    //input 5 integers
    cout << "Enter 5 Numbers : \n";
    for (int i = 0; i < 5; ++i) {
        cin >> numbers[i];
    }

    for (int i = 0; i < 5; ++i)   //  outer loop
    {
        for (int a = i + 1; a < 5; ++a) // inner loop
        {
            if (numbers[i] > numbers[a]) 
            {
                asc = numbers[i];
                numbers[i] = numbers[a]; // swapping
                numbers[a] = asc;
            }
        }
    }
    cout << endl << "Ascending Order : ";
    for (int i = 0; i < 5; ++i)
    {
        cout << numbers[i] << " ";
    }
    return 0;
}

Я пытаюсь понять каждую строку, но я застрял во внешнем цикле, внутреннем цикле и в части SWAPPING, я немного запутался в этой части.

Любая помощь? Заранее спасибо!

1 Ответ

0 голосов
/ 31 октября 2018

Пусть входы 5, 1, 4, 2, 8.

С 5> 1 (число [i]> число [i] +1)

Вам потребуется переменная для временного хранения значения числа [i] перед выполнением замены, и в этом случае ваша переменная будет asc.

Когда asc сохраняет значение числа [i], значение числа [i + 1] заменит исходное значение числа [i], а значение asc заменит значение числа [i + 1]. , Следовательно, обмен значениями обоих чисел завершен.

Для полной сортировки массива требуется несколько раундов пузырьковых сортировок. Ниже приведен пример визуального представления алгоритма сортировки пузырьков.

Первый раунд Bubble Sort:

( 5 1 4 2 8) -> ( 1 5 4 2 8), Здесь алгоритм сравнивает первые два элемента и переставляет с 5> 1.

(1 5 4 2 8) -> (1 4 5 2 8), своп с 5> 4

(1 4 5 2 8) -> (1 4 2 5 8), поменять местами с 5> 2

(1 4 2 5 8) -> (1 4 2 5 8), Теперь, поскольку эти элементы уже в порядке (8> 5), алгоритм их не меняет.

Второй раунд Bubble Sort:

(1 4 2 5 8) -> (1 4 2 5 8)

(1 4 2 5 8) -> (1 2 4 5 8), своп с 4> 2

(1 2 4 5 8) -> (1 2 4 5 8)

(1 2 4 5 8) -> (1 2 4 5 8)

...