Сортування бульбашкою
Візуалізація · C++ приклад · тест · завдання
Вивчення алгоритму Bubble Sort
Коротко: порівнюємо сусідні елементи і міняємо їх місцями — найбільші "спливають" вправо.
Візуалізація
Підпишіться, щоб бачити: зверху значення (наведіть)
Поточна пара: —
Порівнянь: 190
Обмінів: 111
Код C++ (приклад)

// Сортування бульбашкою (Bubble Sort) — приклад на C++

#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

void bubbleSort(int arr[], int n) {
    for (int i = 0; i < n - 1; i++) {
        for (int j = 0; j < n - i - 1; j++) {
            if (arr[j] > arr[j + 1]) {
                int t = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = t;
            }
        }
    }
}

int main() {
    srand(time(nullptr));
    const int N = 10;
    int arr[N];

    // Генеруємо випадковий масив
    for (int i = 0; i < N; i++)
        arr[i] = rand() % 100;

    cout << "Початковий масив: ";
    for (int i = 0; i < N; i++) cout << arr[i] << " ";
    cout << endl;

    bubbleSort(arr, N);

    cout << "Відсортований масив: ";
    for (int i = 0; i < N; i++) cout << arr[i] << " ";
    cout << endl;

    return 0;
}
      
Блок-схема алгоритму
Початок
Отримати масив arr[0..n-1]
↓
i = 0 .. n-2
Зовнішній цикл
↓
j = 0 .. n-i-2
Внутрішній цикл — порівняння arr[j], arr[j+1]
↓
Якщо arr[j] > arr[j+1]
ПОМІНЯТИ arr[j] і arr[j+1]
↓
Повторити, поки масив відсортований
Кінець

Завдання для учнів

  1. Поясніть своїми словами, як працює алгоритм бульбашки. (укр.)
  2. Запишіть час виконання (у тиках або секундах) для Bubble Sort на масивах розмірів 100, 1000, 5000 — спробуйте 3 різні входи (випадковий, відсортований, зворотний).
  3. Реалізуйте bubbleSort у C++ і додайте лічильники для порівнянь та обмінів.
  4. Поясніть, чому Bubble Sort — поганий вибір для великих масивів, та наведіть приклад кращого алгоритму.
  5. Модифікуйте алгоритм, щоб при відсутності обмінів на проході зупинятись раніше (оптимізована бульбашка).

Тест: Перевір свої знання

Час тесту:
10:00
1. Що робить алгоритм Bubble Sort?
2. Яка складність Bubble Sort у середньому (Big-O)?
3. Що означає 'оптимізована' бульбашка?
4. Який елемент 'спливає' вправо при кожному проході?
5. Для чого використовують лічильники порівнянь та обмінів?
6. Який варіант покращення зупиняє алгоритм раніше?
7. При відсортованому масиві, що буде з виконанням стандартної бульбашки?
8. Що краще за Bubble Sort для великих масивів?
9. Що таке стабільність сортування?
10. Який елемент обирається для порівняння у внутрішньому циклі?
Результат: 8 / 10 (80%)