// инициализация дополнительных списков - "карманов"
pockets = array[range]
for i = 0 to range - 1
pockets[i] = newArray
// Основной цикл
for step = 0 to width - 1
// распределение
for i = 0 to (sortedArr.length - 1)
// Получаем значение step-го разряда текущего элемента(ключа)
// ("/" - целочисленное деление)
currDigit = (sortedArr[i] % range^(step + 1)) / range^step
pockets[currDigit].add(sortedArr[i]);
// сборка
k = 0 // индекс элементов новой последовательности
for i = 0 to range - 1
for ii = 0 to (pockets[i].length - 1)
sortedArr[k++] = pockets[i][ii]
// Очищение карманов
if step < width - 1
for i = 0 to range - 1
pockets[i] = newArray