python排序算法之基数排序

#代码如下:

'''
基数排序:
1.把数据分为10个桶,以为数字有0-9这10个
2.依次把数据的个位,十位,百位等等各个位数的数据进行分桶排序,放在这10个桶中
3.最大的数有k位,则循环k次
4.时间复杂度O(kn),空间复杂度O(k+n),其中k=log10(n)+1
'''
def radixs_sort(li):
    max_num = max(li)
    it = 0
    while 10 ** it <= max_num:
        buckets = [[] for i in range(10)] #创建10个桶
        for var in li:
            digit = var // (10 ** it) % 10
            #digit=0-9,当t=0时,对个位排序,t=1时,对十位排序,依次类推,
            buckets[digit].append(var) #把var依次从个位,十位,到最高位排序

        li.clear() #清理li数据
        for buc in buckets:
            li.extend(buc)          #把数据放进li中

        it = it + 1

li = list(range(10))
random.shuffle(li)
print(li)
radixs_sort(li)
print(li)

结果如下:

在这里插入图片描述

你可能感兴趣的:(python数据结构和算法,python,算法)