Menu
CoddyTech

Pseudocode

Pelajaran 4 dari 9 dalam kursus Heap Sort, Seri DSA di Coddy.

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:   # build max-heap
      siftDown(array, i, n)
   for end from n-1 down to 1:     # extract max repeatedly
      swap array[0] and array[end]
      siftDown(array, 0, end)
  • siftDown mendorong parent yang terlalu kecil melewati child yang lebih besar hingga property max-heap dipulihkan. size menunjukkan seberapa banyak bagian array yang masih menjadi bagian dari heap.
  • Fase pembangunan: melakukan sift down pada setiap node non-leaf, dari parent terakhir, indeks n/2 - 1, hingga root, mengubah array apa pun menjadi max-heap.
  • Fase pengurutan: setiap langkah memindahkan nilai maksimum saat ini ke bagian akhir dan mengecilkan heap, sehingga array terisi dalam keadaan terurut dari belakang.

Coba sendiri

Pelajaran ini tidak memiliki tantangan kode.

quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Heap Sort, Seri DSA

Latihan sendiri: Compiler C online