Алгоритми сортування та O-нотація

Дослідження ефективності алгоритмів та їх візуалізація

Теорія: Велике O нотація

Велике O нотація (O-нотація) — це математичний спосіб опису асимптотичної поведінки функцій. У комп'ютерних науках вона використовується для опису часової складності алгоритмів у найгіршому випадку.

Основні типи складності:

O-нотація допомагає порівнювати ефективність алгоритмів незалежно від апаратного забезпечення та конкретних деталей реалізації.

Сортування бульбашкою (Bubble Sort)

Алгоритм порівнює сусідні елементи і міняє їх місцями, якщо вони розташовані в неправильному порядку. Процес повторюється доти, доки масив не буде відсортований.

Складність: O(n²) у найгіршому та середньому випадку, O(n) у найкращому випадку.

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 temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
            }
        }
    }
}

Сортування вибором (Selection Sort)

Алгоритм знаходить мінімальний елемент у невідсортованій частині масиву і поміщає його на початок. Потім процес повторюється для решти масиву.

Складність: O(n²) у всіх випадках.

void selectionSort(int arr[], int n) {
    for (int i = 0; i < n-1; i++) {
        // Знаходження мінімального елемента
        int min_idx = i;
        for (int j = i+1; j < n; j++) {
            if (arr[j] < arr[min_idx]) {
                min_idx = j;
            }
        }
        
        // Обмін знайденого мінімального елемента з першим елементом
        int temp = arr[min_idx];
        arr[min_idx] = arr[i];
        arr[i] = temp;
    }
}

Візуалізація сортування

00:00

Тест з алгоритмів сортування

1. Яка часова складність алгоритму сортування бульбашкою у найгіршому випадку?

O(n)
O(n²)
O(log n)
O(n log n)

2. Який алгоритм сортування має складність O(n²) у всіх випадках?

Сортування бульбашкою
Сортування вибором
Швидке сортування
Сортування злиттям

3. Що означає O-нотація в аналізі алгоритмів?

Точний час виконання алгоритму
Кількість операцій у найкращому випадку
Асимптотична верхня межа складності
Кількість пам'яті, яку використовує алгоритм

4. Яка з цих складностей є найефективнішою для великих наборів даних?

O(n²)
O(2ⁿ)
O(n log n)
O(n)