Головна Алгоритми та AI Алгоритми Сортування — Бульбашка, Швидке, Злиття, Піраміда

🔁 Алгоритми Сортування — Бульбашка, Швидке, Злиття, Піраміда

Інтерактивна візуалізація 6 класичних алгоритмів сортування: Бульбашкою, Швидке, Злиттям, Пірамідальне, Вставками та Вибором. Стежте за порівняннями та обмінами в реальному часі.

Алгоритми та AI2DЛегкий60 FPS
sorting-algorithms ↗ Відкрити окремо
DRAG · SCROLL · CLICK — керуйте прямо у вікні симуляції.

Про алгоритми сортування

Цей візуалізатор одночасно запускає шість класичних алгоритмів сортування на одному й тому самому початковому масиві, тож ви можете спостерігати, як Бульбашкове, Сортування вставками, Вибором, Злиттям, Швидке та Пірамідальне сортування змагаються в реальному часі. Кожен canvas перемальовує висоти стовпців щокадру за допомогою JavaScript-генератора, підсвічуючи два індекси, що зараз порівнюються (жовтий), і ті, що обмінюються (червоний), тоді як відсортовані ділянки стають зеленими. Це наочний спосіб побачити, чому алгоритми O(n log n) випереджають O(n²) зі зростанням розміру масиву.

Бульбашкове сортування O(n²): багаторазово міняє місцями сусідні елементи. Сортування вставками O(n²): вставляє кожен елемент на його правильне місце — ефективне для майже відсортованих даних. Сортування вибором O(n²): знаходить мінімум і ставить його на місце. Сортування злиттям O(n log n): поділ і злиття — стабільне, передбачуване. Швидке сортування O(n log n) у середньому: розбиття за опорним елементом — швидке на практиці. Пірамідальне сортування O(n log n): використовує структуру купи — сортування на місці.

Часті запитання

Чому Сортування злиттям, Швидке та Пірамідальне завершуються швидше за інші?

Вони належать до класу складності O(n log n), який зростає значно повільніше за клас O(n²) (Бульбашкове, вставками, вибором) зі збільшенням розміру масиву. За стандартного масиву з 40 елементів різниця вже помітна; збільште розмір масиву до 80 — і вона стане разючою.

Чому швидке сортування іноді виглядає повільним на пресеті «Reversed» (зворотний порядок)?

Ця реалізація завжди обирає опорним елементом останній елемент масиву. На вже відсортованому або зворотно відсортованому масиві цей вибір є найгіршим випадком для швидкого сортування, деградуючи його до O(n²) замість середнього O(n log n) — відома слабкість, яку на практиці виправляють випадковим вибором опорного елемента або медіаною з трьох.

Що вимірюють лічильники порівнянь унизу?

Лічильники «Порівнянь Bubble» і «Порівнянь Merge» підраховують кожне порівняння елемент-з-елементом (змінна c у кожному генераторі), виконане до цього моменту, що дозволяє порівнювати алгоритмічну вартість напряму, а не лише візуальну швидкість.

Що насправді робить пресет «Майже відсортований»?

Він починає з повністю відсортованого масиву 1..n, а потім виконує приблизно n/10 випадкових обмінів, імітуючи дані, які здебільшого впорядковані — саме сценарій, у якому Сортування вставками та Бульбашкове найближче до свого найкращого випадку O(n).

Чи справді Сортування злиттям завжди O(n log n)?

Так — оскільки воно завжди ділить масив навпіл і зливає незалежно від порядку вхідних даних, час його виконання не залежить від того, наскільки дані вже відсортовані, на відміну від швидкого сортування чи сортування вставками, швидкість яких змінюється залежно від порядку вхідних даних.

Схожі симуляції