13 Mart 2013 Çarşamba

Heap Sort


Heap Sort

Heap Nedir ?

Heap Türkçeye geçmiş haliyle yığın ağacı demektir.Yığın ağaçları verileri dengeli bir ikili ağaçda saklayarak bir veri yapısı oluşturur.Bu yapıda node'lar aynen öncelikli kuyruk gibi öncelik özelliğene göre doldurulur.Aşşağıda basit bir yığın ağacı var.




Yukarıdaki ağaç dizidede [64 , 25 , 52,11,9,32] şeklinde tutulabilir.

Her bireyin üstündeki node kendisinden büyük şekilde sıralanmış gördüğünüz üzere.Bu ağacın bu hale gelmesi için en alt seviyedeki ebeveynden başlarayarak karşılaştırma ve değiştirme işlemleri yapılır.Ardından bir üst node geçilir.Bir eleman aşşağı doğru iniyorsa bir alttındaki elamanlarlada karşılaştırma ve değiştirme işlemleri uygulanır eğer karşılaştırma olumsuz sonuçlanmışsa diğer aynı seviyedeki diğer noda ,aynı seviyede node kalmamışsa üst seviyedeki node'a geçilir.Örnekle pekiştirelim.
















En alt seviyenin bir üst seviyesinden ve soldan başlayarak başlıyoruz karşılaştırmaya.Alttaki node lardan varsa büyüğü veya ikiside büyükse en büyüğüyle değiştirme işlemi yapıyoruz.34 sayısının alt elemanları olduğu için karşılaştırmayı yaptık ancak diğer 2,3,4 diye numaralandırdığın nodeların alt elemanı olmadığı için karşılaştırma yapamıyoruz.Ardından bir üst seviyeye çıkıp aynı işlemleri tekrarlıyoruz .Root(kök) elemanada aynı işlemi yaptıktan sonra gördüğünüz üzere tüm ebevynler çocuklarından büyük durumdalar.

Heap sort ? Heap sortta ise en üstteki elemanı en alttaki ve en sağdaki node ile değiştiririz.Ve büyük elemanı heapdan çıkarırız.En üstteki elemana üstteki heap oluştururken yaptığımız aşşağıya doğru karşılaştırma ve değiştirme işlemlerini yaparız.Tekrardan en üstteki elemana aynı işlemleri yaparak heapı boşaltırız ve heap sort işlemi başarıyla tamamlanmış olur.Resim çizimim fazla iyi olmadığı için aşşağıdaki videyu örnek olarak vereceğim yukarıdaki resimlerin iğrençliklerinden dolayıda kusura bakmayın :)


Hiç yorum yok:

Yorum Gönder