Проверка индексов с помощью Radix Sort

Я читал реализацию поразрядной сортировки, которая работает с типами данных int меньше десяти, т.е. они состоят из одного сиг-фига вместо одного. (например, 1, 0, 3, 4, 9,... просто для ясности). Эта реализация не слишком сложна, но как быть с числами больше десяти? Как вы сравниваете только цифры в разряде единиц при первом проходе, затем цифры в разряде десятков при втором проходе и т. д. без явного преобразования элементов массива в строки или типы char. (или это просто необходимо?)


person kjh    schedule 13.11.2012    source источник


Ответы (1)


Вы всегда можете вытащить n-ю цифру как v/(10**(n-1)) % 10.

Переход от одноразрядной сортировки по основанию к универсальному многоразрядному сортировщику не является тривиальным. В зависимости от порядка, в котором вы обрабатываете цифры, вы либо в конечном итоге отслеживаете границы группы, либо должны использовать «стабильный» вариант.

person DrC    schedule 13.11.2012