Menu
Coddy logo textTech

פסאודו־קוד

שיעור 4 מתוך 9 בקורס מיון ערימה – סדרת DSA של 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 דוחפת צומת אב קטן מדי כלפי מטה מעבר לילד הגדול יותר שלו, עד שתכונת ערימת המקסימום חוזרת. size מציין איזה חלק מהמערך עדיין נמצא בערימה.
  • שלב הבנייה: הורדת כל צומת שאינו עלה (מההורה האחרון, באינדקס n/2 - 1, ועד לשורש) הופכת כל מערך לערימת מקסימום.
  • שלב המיון: בכל צעד מעבירים את הערך המרבי הנוכחי לסוף ומצמצמים את הערימה, כך שהמערך מתמלא בסדר ממוין מהסוף.

נסו בעצמכם

השיעור הזה לא כולל אתגר קוד.

quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה מיון ערימה – סדרת DSA

תרגלו בעצמכם: קומפיילר C אונליין