Pseudo Code
الدرس 4 من 9 في دورة Radix Sort - سلسلة DSA على Coddy.
countingSortByDigit(array, exp):
n = length(array)
output = array of size n
count = array of 10 zeros
for each x in array: # إحصاء كل رقم
count[(x / exp) % 10] += 1
for d from 1 to 9: # المجاميع التراكمية -> المواقع
count[d] += count[d - 1]
for k from n-1 down to 0: # الوضع من الخلف (مستقر)
d = (array[k] / exp) % 10
count[d] -= 1
output[count[d]] = array[k]
return output
radixSort(array):
max = largest value in array
exp = 1
while max / exp > 0:
array = countingSortByDigit(array, exp)
exp = exp * 10- exp هي القيمة المكانية: 1 للآحاد، 10 للعشرات، 100 للمئات.
(x / exp) % 10يستخرج ذلك الرقم. - countingSortByDigit هو فرز مستقر على رقم واحد: يقوم بحساب عدد مرات ظهور كل رقم، ويحول تلك الأعداد إلى مواقع، ثم يضع العناصر من الخلف إلى الأمام للحفاظ على الترتيب.
- radixSort يقوم ببساطة بتشغيل تلك المرحلة مرة واحدة لكل رقم، ويتوقف عندما يتجاوز
expأكبر رقم.
جرّب بنفسك
لا يتضمّن هذا الدرس تحدّيًا برمجيًا.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Radix Sort - سلسلة DSA
2The Algorithm
How it works?Pseudo CodeImplementation (Part 1)Implementation (Part 2)