def radix_sort(nums):
length = len(nums)
if length < 2: return 0
# size 防止利用max_value的超时,基数排序最大排序次数为长度最大的数字的长度
# 利用 num // div % mod 不断获取最后一位数字
mod, div, ans, size = 10, 1, float("-inf"), float("-inf")
for num in nums:
size = max(size, len(str(num)))
# 这里不能利用[] * 10
count = [[] for _ in range(10)]
for i in range(size):
for j in range(length):
index = nums[j] // div % mod
count[index].append(nums[j])
# div每次乘以10,以获取最后一个数字
pos, div = 0, div * 10
for j in range(len(count)):
while len(count[j]) > 0:
nums[pos], pos = count[j].pop(0), pos + 1
for index in range(1, length):
ans = max(ans, nums[index] - nums[index - 1])
return ans
if __name__ == "__main__":
nums = [1, 1000000]
print(radix_sort(nums))