Предполагая десятичную систему с основанием 10 и сортируя каждую цифру от наименее значимой к наиболее значимой, сортировка по основанию начала бы с сортировки цифр в столбце 1 (10 ^ 0), столбце 10 (10 ^ 1), столбце 100 (10 ^ 2), и так далее.
Чтобы ответить на ваш вопрос более кратко, если у вас есть 10 сегментов (массивов), которые вы сортируете на каждом проходе, сначала будут отсортированы отдельные цифры.
Так, например, если массив со всеми однозначными цифрами передается в сортировку по основанию:
[5, 8, 3, 2, 7, 1]
Результирующий вывод для каждого сегмента будет выглядеть примерно так:
[[], [ 1 ], [ 2 ], [ 3 ], [], [ 5 ], [], [ 7 ], [ 8 ], []]
Что последует после этого прохода (или перед каждым последующим проходом, если цифр больше), так это то, что массив будет сглажен в том порядке, в котором они находятся в соответствующих корзинах, с помощью метода, подобного .concat().
Итак, если вы добавили туда пару двузначных чисел:
[5, 8, 13, 2, 41, 1];
Это будет выглядеть примерно так:
[[], [41, 1], [2], [13], [], [5], [], [], [8], []] // first pass, 1's
[41, 1, 2, 13, 5, 8] // flattened; all single digits are sorted on this pass.
[[1, 2, 5, 8 ], [13], [], [], [41], [], [], [], [], []] // second pass, 10's
[1, 2, 5, 8, 13, 41] // flattened; array is now sorted and returned.
Надеюсь это поможет. Я тоже задавался этим вопросом, когда впервые столкнулся с этой проблемой.
person
Dev
schedule
17.12.2020
n = 1
так же действителен, как иn = 8
. - person beaker   schedule 04.05.2016