python --- 基数排序算法

基数排序的方式可以采用LSD,由键值的最右边开始,适用于数值整数。或者MSD,由键值的最左边开始,适用于字符串整数。在LSD基数排序中每一次的处理都是将关键字按顺序放置在其各自的称为桶的数据结构中,而不必与其它关键字进行比较。

 

问题的解决思路:

      基数排序是一种非比较型整数排序算法,它的原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。由于整数也可以表达字符串和特定格式的浮点数,所以基数排序也不只用于整数。

      具体来说,基数排序是将所有待比较数值(正整数)统一为同样的数位长度,数位较短的前面用零补齐,然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后,数列就变成一个有序序列了。

from random import randint


def redix_sort(lst, d):
    for k in range(d):  # 进行几轮排序
        s = [[] for i in range(10)]  # 创建十个桶
        for i in lst:
            s[i // (10**k) % 10].append(i)  # 将数字进行分配到各个对应的桶中
        lst = [j for i in s for j in i]  # 将十个桶整合成一个列表,方便下次进行排序
    return lst


l = []
for i in range(10):
    l.append(randint(1, 999))
print(redix_sort(l, 3))

 

posted @ 2019-04-27 08:17  tulintao  阅读(648)  评论(0编辑  收藏  举报