【千锤百炼Python—8】:十大排序算法之基数排序

✨博客主页:王乐予🎈
✨年轻人要:Living for the moment(活在当下)!💪
🏆推荐专栏:【图像处理】【千锤百炼Python】【深度学习】【排序算法


基数排序是排序算法系列的第八个要介绍的算法!

基数排序既属于非比较类排序也属于内部排序

😺一、算法原理

🐶1.1 算法原理

基数排序(Radix Sort)是把待排序中的元素按照低位先排序,然后收集,再按照高位排序,再收集,直至最高位。

🐶1.2 算法步骤

  • 步骤一:取得待排序序列中的最大值,并取得位数;
  • 步骤二:arr为原始数组,从最低位开始取每个位组成radix数组;
  • 步骤三:对radix进行计数排序。

😺二、动图演示

在这里插入图片描述

😺三、程序实现

参考:

https://blog.csdn.net/weixin_43790276/article/details/107398348

def radixsort(array):
    max_num = max(array)
    place = 1
    while max_num >= 10 ** place:
        place += 1
    for i in range(place):
        buckets = [[] for _ in range(10)]
        for num in array:
            radix = int(num / (10 ** i) % 10)
            buckets[radix].append(num)
        j = 0
        for k in range(10):
            for num in buckets[k]:
                array[j] = num
                j += 1
    return array


if __name__ == '__main__':
    array = [3, 44, 38, 5, 47, 15, 36, 26, 27, 2, 46, 4, 19, 50, 48]
    print(radixsort(array))

输出结果为:

[2, 3, 4, 5, 15, 19, 26, 27, 36, 38, 44, 46, 47, 48, 50]

【千锤百炼Python—11】:十大排序算法总结(动画+代码)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王乐予

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值