Šakos rūšiavimas iš masyvo sukuria dvejetainę šaką, o tada pakartotinai išimami didžiausi elementai, kad būtų gauta surūšiuota tvarka. Jis vykdomas O(n log n) laiku ir yra in-place.
Idėja
Max-šaka laiko didžiausią elementą šaknies vietoje. Sukurkite šaką (O(n)), tada sukeiskite šaknį galu, sumažinkite šaką ir vėl nuheapify (sift down) — n kartų.
Pavyzdys
heapq
():
heapq.heapify(arr)
[heapq.heappop(arr)
_ ((arr))]
heap_sort([, , , , ])
