Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

Pseudo Code

الدرس 4 من 9 في دورة Heap Sort - سلسلة 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 بدفع العنصر الأب الصغير جداً إلى الأسفل متجاوزاً ابنه الأكبر حتى يتم استعادة خاصية الـ max-heap. يمثل size مقدار الجزء من المصفوفة الذي لا يزال جزءاً من الكومة (heap).
  • مرحلة البناء (Build phase): يؤدي إجراء عملية sifting down لكل عقدة ليست ورقة (من آخر أب، الفهرس n/2 - 1، وصولاً إلى الجذر) إلى تحويل أي مصفوفة إلى max-heap.
  • مرحلة الفرز (Sort phase): تقوم كل خطوة بنقل الحد الأقصى الحالي إلى النهاية وتقليص الكومة، بحيث تمتلئ المصفوفة بشكل مرتب من الخلف.

جرّب بنفسك

لا يتضمّن هذا الدرس تحدّيًا برمجيًا.

quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Heap Sort - سلسلة DSA