Mã giả
Bài học 4 trên 9 trong khóa học Sắp xếp cơ số, chuỗi DSA của 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 là giá trị hàng: 1 cho hàng đơn vị, 10 cho hàng chục, 100 cho hàng trăm.
(x / exp) % 10lấy chữ số đó. - countingSortByDigit là thuật toán sắp xếp ổn định theo một chữ số: đếm số lần xuất hiện của từng chữ số, chuyển các số đếm thành vị trí, rồi đặt các phần tử từ sau ra trước để giữ nguyên thứ tự.
- radixSort chỉ chạy lượt đó một lần cho mỗi chữ số, dừng khi
expvượt qua số lớn nhất.
Tự làm thử
Bài học này không có thử thách code.
Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Sắp xếp cơ số, chuỗi DSA
Tự luyện tập: Trình biên dịch C online