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