2013-03-22 6 views
3

Я знаю, что сортировка radix работает, сравнивая цифры цифр. Мой вопрос: предположим, что у нас разные числа с разным количеством цифр. Здесь работает сортировка radix? Мы можем просто предположить, что, например, если мы сравниваем два числа, один с 3 цифрами и один с 6 цифрами, первые 3 цифры меньшего числа равны 0. Но как насчет реализации? Как мы можем заставить программу предположить, что если цифр недостаточно, то эти цифры равны нулю?Работает ли сортировка radix с номерами, у которых разное количество цифр?

спасибо.

+2

Короче говоря, да. # – Vesper

+0

Левая сторона Zero-padding до тех пор, пока все строки не будут иметь такую ​​же длину, как и самая длинная строка ввода –

ответ

2

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

Этого 3 номер

9912 
999 
123 

может быть преобразован в

9912 
0999 

и сортирует с использованием регулярного базисного рода, или они могут быть отсортирован как 2 независимых группы:

9912 

и

999 
123 

Последняя даст вам (при условии, по возрастанию)

123 
999 

и бывший остается прежним. Затем вы объединяете отсортированные группы (от более коротких номеров до более длинных номеров):

123 
999 
9912 

Это все.

1

Если у вас есть число в целой переменной, то вы можете извлечь цифры, как это (п = 0, 1, 2, ...):

digit = (number/radix^n) % radix