Developer Toolbox

Heapsort

Uspořádá seznam do haldy, tedy stromu, ve kterém je každý rodič větší než jeho potomci. Pak znovu a znovu přesouvá největší hodnotu na konec.

  • Ω(n log n)
  • Θ(n log n)
  • O(n log n)
  • O(1)
  • ne
  • ano
  • porovnávání
  • přesun
  • na konečném místě
0 / 299 kroků
Porovnání Výměny

Stiskněte Přehrát: čáry ukazují, jak během řazení rostou náklady

Stiskněte Přehrát nebo procházejte algoritmus krok po kroku.

Mezerník: přehrát nebo pozastavit. Šipky vlevo/vpravo: krok. Home a End: přeskočit.

Zkuste: Zvolte obrácený seznam. Stavba haldy skoro nepotřebuje výměny, pak každé kolo přesune největší hodnotu na konec.

Jak to funguje

Halda je uložená přímo v seznamu. Hodnota na místě s číslem i má potomky na místech 2i+1 a 2i+2 a největší hodnota je vždy na začátku. Prohoďte ji na konec, zmenšete haldu o jedno místo a opravte ji. Seřazená část roste zprava.

Kdy se hodí

Když potřebujete rychlost, která vydrží i v nejhorším případě, a žádnou paměť navíc, třeba na malých zařízeních. V průměru je pomalejší než quicksort, proto často slouží jen jako pojistka.