1.首先按照个位排序,然后按照十位排序,以此类推。
def RadixSort(self, nums):
n = len(str(max(nums)))
for i in range(n):
dict_, dict = {}, {}
for x in range(10):
dict.setdefault(x, [])
# 记录负数
for x in range(9, -1, -1):
dict_.setdefault(x, [])
for x in nums: # 对每一位进行排序
radix = int((x / (10 ** i)) % 10) # 得到每位的基数
if x > 0:
dict[radix].append(x) # 将对应的数组元素加入到相应位基数的桶中
else:
dict_[radix].append(x)
j = 0
for k in range(10):
if len(dict_[k]) != 0:
for y in dict_[k]:
nums[j] = y
j += 1
for k in range(10):
if len(dict[k]) != 0:
for y in dict[k]:
nums[j] = y
j += 1
return nums