Pseudo Code
Coddy'nin Heap Sort - DSA Serisi kursunda ders 4 / 9.
siftDown(array, i, size):
loop:
largest = i
left = 2*i + 1
right = 2*i + 2
if left < size and array[left] > array[largest]: largest = left
if right < size and array[right] > array[largest]: largest = right
if largest == i: stop
swap array[i] and array[largest]
i = largest
heapSort(array):
n = length(array)
for i from n/2 - 1 down to 0: # max-heap oluştur
siftDown(array, i, n)
for end from n-1 down to 1: # maksimumu tekrar tekrar çıkar
swap array[0] and array[end]
siftDown(array, 0, end)- siftDown, max-heap özelliği yeniden sağlanana kadar çok küçük bir ebeveyni daha büyük olan çocuğunun altına iter.
size, dizinin ne kadarının hala yığının (heap) bir parçası olduğudur. - Oluşturma aşaması: Yaprak olmayan her düğümü (son ebeveynden, yani
n/2 - 1indeksinden köke kadar) aşağı doğru süzmek, herhangi bir diziyi bir max-heap'e dönüştürür. - Sıralama aşaması: Her adım mevcut maksimumu sona taşır ve yığını küçültür, böylece dizi sondan başa doğru sıralanmış şekilde dolar.
Kendin dene
Bu ders bir kod alıştırması içermiyor.
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Heap Sort - DSA Serisi bölümündeki tüm dersler
2The Algorithm
How it works?Pseudo CodeImplementation (Part 1)Implementation (Part 2)