Я пытаюсь использовать сортировку по основанию, чтобы отсортировать список неупорядоченных целых чисел, как положительных, так и отрицательных. У меня есть возможность сортировать список положительных чисел, но я не понимаю, как использовать сортировку по основанию с отрицательными числами. Мне было интересно, может ли кто-нибудь помочь мне с кодированием и объяснением того, как сортировка по основанию работает с отрицательными числами. После некоторого поиска в Google я понимаю, что вы должны относиться к отрицательному знаку как к специальному символу, но я все еще в замешательстве. Ниже вы можете увидеть реализацию сортировки по основанию, которая у меня есть на данный момент, взятую с https://gist.github.com/rizkyabdilah/1740053.
def radix_sort(random_list):
len_random_list = len(random_list)
modulus = 10
div = 1
while True:
# empty array, [[] for i in range(10)]
new_list = [[], [], [], [], [], [], [], [], [], []]
for value in random_list:
least_digit = value % modulus
least_digit /= div
new_list[least_digit].append(value)
modulus = modulus * 10
div = div * 10
if len(new_list[0]) == len_random_list:
return new_list[0]
random_list = []
rd_list_append = random_list.append
for x in new_list:
for y in x:
rd_list_append(y)
random_data = [13, 8, 1992, 31, 3, 1993, 1, 0, -1]
print radix_sort(random_data)
Спасибо за помощь!