Piramis fajta

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2020. február 9-én felülvizsgált verziótól ; az ellenőrzések 9 szerkesztést igényelnek .

A Heap sort ( eng.  Heapsort , “Heap sort” [1] ) egy olyan rendezési algoritmus , amely a legrosszabb, átlagosan és a legjobb esetben (vagyis garantáltan) működik az elemek rendezésekor végzett műveleteknél. [2] A felhasznált háttérmemória mennyisége nem függ a tömb méretétől (vagyis ).

Felfogható a buborékrendezés továbbfejlesztéseként , amelyben egy elem több útvonalon lebeg ( min-heap ) / süllyed ( max-heap ).

Létrehozási előzmények

A Heapsort J. Williams javasolta 1964-ben. [egy]

Algoritmus

A Heapssort bináris rendezési fát használ . A válogatófa olyan fa, amely megfelel a következő feltételeknek:

  1. Minden levél mélysége vagy , vagy , ami  a fa maximális mélysége.
  2. Az érték egyik csúcson sem kisebb (a másik lehetőség nem több, mint) a leszármazottjainak értéke.

A rendezési fa kényelmes adatszerkezete egy olyan tömb Array, amely Array[0] a gyökérben lévő elem, az elem gyermekei Array[i]pedig Array[2i+1]és Array[2i+2].

A rendezési algoritmus két fő lépésből áll:

1. Építse fel a tömb elemeit rendezési fa formájában! :

at .

Ez a lépés műtétet igényel.

2. Egyenként távolítjuk el az elemeket a gyökérből, és újjáépítjük a fát. Azaz első lépésben kicseréljük Array[0]és Array[n-1], Array[0], Array[1], … , Array[n-2]válogatófává alakítjuk. Ezután átrendezzük Array[0]és Array[n-2], Array[0], Array[1]… , Array[n-3]válogatófává alakítjuk. A folyamat addig folytatódik, amíg már csak egy elem marad a rendezési fában. Ekkor Array[0], Array[1], … , Array[n-1] egy rendezett sorozat.

Ez a lépés műtétet igényel.

Előnyök és hátrányok

Előnyök

Hibák

Az O ( n ) memóriaigényes egyesítési rendezés gyorsabb ( kisebb konstans mellett), és nem romlik le rossz adatok esetén.

Az algoritmus bonyolultsága miatt az erősítést csak nagy n esetén kapjuk meg . Kis n - en (több ezerig) a Shellsort gyorsabb .

Alkalmazás

A "halom rendezés" algoritmust aktívan használják a Linux kernelben .

Jegyzetek

  1. 1 2 Előadások „A párhuzamos programozás modern technológiái”, 5. előadás: Heap rendezés (elérhetetlen link) . Letöltve: 2009. március 20. Az eredetiből archiválva : 2009. március 15. 
  2. ScienceDirect - Journal of Algorithms: The Analysis of Heapsort . Letöltve: 2017. szeptember 30. Az eredetiből archiválva : 2012. június 4.

Irodalom

Linkek