基数排序

為{幸葍}努か 提交于 2020-02-09 03:28:32

基数排序

定义

基数排序是按照低位先排序,然后收集;再按照高位排序,然后再收集;依次类推,直到最高位。有时候有些属性是有优先级顺序的,先按低优先级排序,再按高优先级排序。最后的次序就是高优先级高的在前,高优先级相同的低优先级高的在前。

算法描述

  • 取得数组中的最大数,并取得位数;
  • arr为原始数组,从最低位开始取每个位组成radix数组;
  • 对radix进行计数排序(利用计数排序适用于小范围数的特点);

代码实现

#基于桶排序的基数排序
def radixSort(list):
    d = len(str(max(list)))
    for k in range(d):#d轮排序
        s=[[] for i in range(10)]#因为每一位数字都是0~9,故建立10个桶
        for i in list:
            s[int(i/(10**k)%10)].append(i)
        list=[j for i in s for j in i]
    return list

nums = [5, 6, 3, 2, 1, 2, 0, 8, 0, 65]
print(radixSort(nums))

时间复杂度

时间复杂度

  • 最优时间复杂度:O(n*k)
  • 最坏时间复杂度:O(n*k)
  • 稳定性:稳定

动画演示

在这里插入图片描述

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!