1. 基数排序法
基数排序法和计数排序法一样,都是一种非交换排序。基数排序过程和计数排序过程都需要借助桶来进行。基数排序的主要思想是设置若干个桶,将关键字为k的记录放入第k个桶,然后按序号将非空的数据连接。关键字k就是将每个数据按个位、十位、百位…进行分割而产生的。基数排序不仅仅可以应用在数字之间的排序,还可以应用在字符串排序(按26个字母顺序)等。
2. 使用基数排序法为列表中的数字进行递增排序
具体代码如下:
def radix_sort(data): # 基数排序,参数data是待排序数列
i = 0 # 记录当前正在排拿一位,最低位为1
max_num = max(data) # 最大值
j = len(str(max_num)) # 记录最大值的位数
while i < j:
# 初始化桶数组,因为每一位数字都是0~9,故建立10个桶,列表中包含十个列表元素
bucket_list = [[] for x in range(10)]
for x in data: # 找数据s
bucket_list[int(x / (10 ** i)) % 10].append(x) # 找到位置放入桶数组
print(bucket_list) # 打印每次的桶情况
data.clear() # 将原data置空
for x in bucket_list: # 放回原data序列
for y in x: # 遍历排序后的结果
data.append(y) # 放数据
i += 1 # 执行一次,向后继续拿数据执行循环
data = [410,265,52,530,116,789,110] # 待排序列表
radix_sort(data) # 调用基数排序函数
print(data) # 输出排序结果