我试图利用基数排序来排序一系列无序的整数,包括正整数和负整数。我有能力对一系列正数进行排序,但我不知道如何使用基数排序和负数。我想知道是否有人能帮我编码和解释基数排序如何与负数一起工作的部分。经过几次谷歌搜索,我明白了你必须把负号当作一个特殊的字符来对待,但我还是在迷茫的火车上。下面您可以看到我目前实现的基数排序,取自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)
谢谢你的帮助!在