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

// Сортування вибором (Selection Sort) — приклад на C++

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

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;
    }
}

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;

    selectionSort(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
Зовнішній цикл - поточна позиція
↓
min_idx = i
Припускаємо, що поточний елемент мінімальний
↓
j = i+1 .. n-1
Внутрішній цикл - пошук мінімуму
↓
Якщо arr[j] < arr[min_idx]
Оновити min_idx = j
↓
Поміняти arr[i] і arr[min_idx]
Перемістити мінімум на позицію i
↓
Повторити, поки масив відсортований
Кінець

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

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

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

Час тесту:
10:00