פסאודו-קוד
שיעור 4 מתוך 9 בקורס מיון רדיקס – סדרת DSA של Coddy.
countingSortByDigit(array, exp):
n = length(array)
output = array of size n
count = array of 10 zeros
for each x in array: # tally each digit
count[(x / exp) % 10] += 1
for d from 1 to 9: # running totals -> positions
count[d] += count[d - 1]
for k from n-1 down to 0: # place from the back (stable)
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עובר את המספר הגדול ביותר.
נסו בעצמכם
השיעור הזה לא כולל אתגר קוד.
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה מיון רדיקס – סדרת DSA
תרגלו בעצמכם: קומפיילר C אונליין