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

时间复杂度 O(n*k)

空间复杂度 O(n+m)

def radix_sort(data_list):
    max_num = max(data_list)  # 最大值 9->1,99->2,888->3
    print(max_num)
    it = 0
    while 10 ** it <= max_num:
        buckets = [[] for _ in range(10)]
        for var in data_list:
            digit = (var // 10 ** it) % 10
            buckets[digit].append(var)
        # 分桶完毕
        data_list.clear()
        for buc in buckets:
            # 重新写入
            data_list.extend(buc)

        it += 1


import random

li = list(range(1000))
random.shuffle(li)
radix_sort(li)
print(li)

基数排序

results matching ""

    No results matching ""