python实现排序算法——基数排序

       使用python实现基数排序,基数排序也是非比较的排序方法,并且它也是基于桶排序的。

       基数排序的原理在于把数字按照不同的位切分,首先排序最后一位,然后排序倒数第二位,一直到排序最高位。因为最高位是最重要的,所以放在最后。

       基数排序的缺点在于不能处理小数和负数。相对于计数排序和桶排序,基数排序的优点在于当数据的分布不均匀的时候,占用的空间更少。


算法步骤

Step 1: 获取最大位数,确定循环次数
Step 2: 设置10个桶,因为0-9只有10个数
Step 3: 每次循环排序1个位数


算法举例

排序【1,3,9,408,5,11,101,306】,发现最大的位数是3。

第一次排序: 排个位数
【【】,【1,11,101】,【】,【3】,【】,【5】,【306】,【】,【408】,【9】】

组合:【1,11,101,3,5,306,408,9】

第二次排序: 排十位数
【【1,101,3,5,306,408,9】,【11】,【】,【】,【】,【】,【】,【】,【】,【】】

组合:【1,101,3,5,306,408,9,11】

第三次排序: 排百位数
【【1,3,5,9,11】,【101】,【】,【306】,【408】,【】,【】,【】,【】,【】】

组合:【1,3,5,9,11,101,306,408】

排序结束。


算法评价

       基数排序的空间复杂度是 O ( n + k ) O(n+k) O(n+k),其时间复杂度无论输入数据如何都是 O (

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值