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): تقوم كل خطوة بنقل الحد الأقصى الحالي إلى النهاية وتقليص الكومة، بحيث تمتلئ المصفوفة بشكل مرتب من الخلف.
جرّب بنفسك
لا يتضمّن هذا الدرس تحدّيًا برمجيًا.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Heap Sort - سلسلة DSA
2The Algorithm
How it works?Pseudo CodeImplementation (Part 1)Implementation (Part 2)