Developer Toolbox

Heapsort

Aranjează lista într-un heap, un arbore în care fiecare părinte e mai mare decât copiii lui. Apoi mută cea mai mare valoare la capăt, iar și iar.

  • Ω(n log n)
  • Θ(n log n)
  • O(n log n)
  • O(1)
  • nu
  • da
  • comparare
  • mutare
  • pe poziția finală
0 / 299 pași
Comparații Schimbări

Apasă pe redare: liniile arată cum crește costul în timpul sortării

Apasă pe redare sau parcurge algoritmul pas cu pas.

Space: redă sau pauză. Săgețile stânga și dreapta: pas cu pas. Home și End: salt.

Încearcă: Alege o listă inversată. Heap-ul se construiește aproape fără schimbări, apoi fiecare rundă mută cea mai mare valoare la capăt.

Cum funcționează

Heap-ul e ținut chiar în listă: valoarea de pe poziția i are copiii pe pozițiile 2i+1 și 2i+2, iar cea mai mare valoare e mereu în față. O muți la capăt printr-o schimbare, micșorezi heap-ul cu o poziție și îl repari. Partea sortată crește dinspre dreapta.

Când este o alegere bună

Când ai nevoie de o viteză care rămâne bună chiar și în cel mai rău caz, fără memorie suplimentară, de exemplu pe dispozitive mici. În medie e mai lent decât quicksort, așa că e folosit des ca plasă de siguranță.