Strona główna Algorytmy i Struktury Danych Wizualizacja algorytmów sortowania — Bubble, Quick, Merge, Heap

🔁 Wizualizacja algorytmów sortowania — Bubble, Quick, Merge, Heap

Interaktywna wizualizacja 6 klasycznych algorytmów sortowania: Bubble, Quick, Merge, Heap, Insertion i Selection Sort. Obserwuj porównania, zamiany i stan tablicy na żywo. Steruj prędkością, rozmiarem tablicy i porządkiem początkowym.

Algorytmy i Struktury Danych2DŁatwy60 FPS
sorting-algorithms ↗ Otwórz osobno
Interfejs samej symulacji jest w języku angielskim.

O tej symulacji

Ta wizualizacja uruchamia sześć klasycznych algorytmów sortowania obok siebie na tej samej tablicy początkowej, dzięki czemu możesz obserwować, jak Bubble, Insertion, Selection, Merge, Quick i Heap sort rywalizują w czasie rzeczywistym. Każde płótno odrysowuje wysokości słupków w każdej klatce na podstawie funkcji generatora JavaScript, podświetlając dwa aktualnie porównywane indeksy (bursztynowy) i zamieniane (czerwony), podczas gdy posortowane obszary zmieniają kolor na zielony. To praktyczny sposób, aby zobaczyć, dlaczego algorytmy O(n log n) wyprzedzają algorytmy O(n²) w miarę wzrostu rozmiaru tablicy.

🔬 Co pokazuje

Sześć płócien działa niezależnie, wykorzystując funkcje generatorów JS (yield), które zatrzymują się po każdym porównaniu, dzięki czemu wszystkie sześć algorytmów animuje się zsynchronizowanie. Wysokość słupka koduje wartość, a kolor rolę: bursztynowy = porównywane, czerwony = zamieniane, zielony = zakończone.

🎮 Jak korzystać

Dostosuj Rozmiar tablicy (10–80) i Prędkość (1–30 kroków na klatkę) suwakami, wybierz układ początkowy przyciskami Random / Nearly Sorted / Reversed / All Same, a następnie naciśnij Sort All, aby je uruchomić, i New Array, aby przetasować dane.

💡 Czy wiesz, że?

Na niemal posortowanej tablicy Insertion Sort może zakończyć się w czasie bliskim O(n) — w praktyce szybciej niż „lepsze” algorytmy O(n log n) dla małych, niemal uporządkowanych danych wejściowych, dlatego prawdziwe biblioteki, takie jak Timsort, wracają do niego.

Najczęściej zadawane pytania

Dlaczego Merge, Quick i Heap sort kończą działanie szybciej niż pozostałe?

Należą do klasy złożoności O(n log n), która rośnie znacznie wolniej niż klasa O(n²) (Bubble, Insertion, Selection) wraz ze wzrostem rozmiaru tablicy. Przy domyślnej 40-elementowej tablicy różnica jest widoczna; zwiększ Rozmiar tablicy do 80, a stanie się dramatyczna.

Dlaczego Quick Sort czasami wygląda na wolny przy ustawieniu „Reversed”?

Ta implementacja zawsze wybiera ostatni element jako pivot. Na już posortowanej lub odwróconej tablicy taki wybór jest najgorszym przypadkiem dla Quick Sort, degradując go w kierunku O(n²) zamiast średniego O(n log n) — dobrze znana słabość naprawiana w praktyce losowym pivotem lub medianą z trzech.

Co mierzą liczniki porównań na dole?

Liczniki „Bubble comparisons” i „Merge comparisons” zliczają każde dotychczasowe porównanie element-element (zmienna c w każdym generatorze), pozwalając bezpośrednio porównać koszt algorytmiczny, a nie tylko szybkość wizualną.

Co dokładnie robi ustawienie „Nearly Sorted”?

Zaczyna od w pełni posortowanej tablicy od 1 do n, a następnie wykonuje mniej więcej n/10 losowych zamian, symulując dane, które są w większości uporządkowane — scenariusz, w którym Insertion i Bubble sort działają najbliżej swojego najlepszego przypadku O(n).

Czy Merge Sort naprawdę zawsze ma złożoność O(n log n)?

Tak — ponieważ zawsze dzieli tablicę na pół i scala niezależnie od porządku danych wejściowych, jego czas działania nie zależy od tego, jak bardzo dane są już posortowane, w przeciwieństwie do Quick Sort czy Insertion Sort, których szybkość zmienia się w zależności od porządku wejściowego.

Podobne symulacje