排序算法之基数排序
2020-12-13 04:26
标签:git int ima 实现 span sort lob info rand 一、原理 基数排序是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。由于整数也可以表达字符串(比如名字或日期)和特定格式的浮点数,所以基数排序也不是只能使用于整数。 步骤: (1)创建10个桶(列表)分别给每一个数位 (2)遍历每个数位 (3)遍历列表中的每个元素,并将它放到相应的桶中 (4)将元素恢复至列表中 二、实现 参考: https://github.com/hustcc/JS-Sorting-Algorithm/blob/master/10.radixSort.md https://visualgo.net/zh/sorting 排序算法之基数排序 标签:git int ima 实现 span sort lob info rand 原文地址:https://www.cnblogs.com/shenjianping/p/11110316.htmlimport random
def list_to_bucket(li, i):
bins = [[] for i in range(10)] # 创建10个桶(列表)分别给每一个数位
for num in li:
j = num // (10**i) % 10
bins[j].append(num)
return bins
def bucket_to_list(bins):
return [i for bin in bins for i in bin]
def radixSort(li):
max_num = max(li)
i = 0
while 10 ** i # 循环每一次就比较每一个数的每一位
bins = list_to_bucket(li, i)
li = bucket_to_list(bins)
i += 1
return li
li = [random.randint(0, 200) for i in range(10000)]
radixSort(li)
print(radixSort(li))
上一篇:排序算法之桶排序
下一篇:python5.1文件的读取