EMZETT.
Giriş yap

Heapsort (yığın sıralaması)

Kısaca: Heapsort, verileri bir max-yığına (max-heap) dönüştürüp ardından en büyük öğeyi tekrar tekrar sona taşıyarak sıralar.

Biraz daha ayrıntılı: En kötü durumda bile her zaman O(n log n)‘de çalışır ve ek bellek gerektirmez. Ancak pratikte genellikle quicksort’tan yavaştır; çünkü belleği doğrusal değil sıçramalı okur.

Ayrıntılı

  • 1. adım: Dizi O(n)‘de bir max-yığına dönüştürülür: ortadan geriye doğru her düğüm aşağıya “batırılır”.
  • 2. adım: Kök (en büyük öğe) son öğeyle yer değiştirir. Yığın 1 küçülür ve yeni kök batırılır.
  • Yinele, yığın boşalana dek. Dizi o zaman artan sıralıdır.
  • Özellikler: kararlı değil, yerinde (in place), ön sıralılıktan bağımsız.
  • Kullanım: Quicksort çok derine özyinelerse introsort’ta yedek olarak. Bkz. yığın ve öncelik kuyruğu.

Ayrıca bak: Birleştirme sıralaması