排序算法——基数排序

基数排序是一种稳定的排序算法,通过将所有待比较数值转换为相同位数,并按位进行排序来实现整体有序。时间复杂度为O(d×2n),空间复杂度为O(n)。基数排序分为最低位优先LSD和最高位优先MSD两种,适用于不同位数需求的数列。文章还包含了算法原理和代码实现。
摘要由CSDN通过智能技术生成

设排序数组的个数为n,数组中最大元素的位数为d。

时间复杂度:0(d×2n),2n代表的是一趟分配需要O(n),一趟收集需要O(n),这样的循环一共需要d次。

空间复杂度:O(n)

稳定性:稳定

算法原理:它是这样实现的:将所有待比较数值(正整数)统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后, 数列就变成一个有序序列。

基数排序的方式可以采用最低位优先LSD(Least sgnificant digital)法最高位优先MSD(Most sgnificant digital)法,LSD的排序方式由键值的最右边开始,而MSD则相反,由键值的最左边开始。LSD的基数排序适用于位数小的数列,如果位数多的话,使用MSD的效率会比较好,MSD的方式恰与LSD相反,是由高位数为基底开始进行分配,其他则都相同。

图示:

 代码:

 public static void radix_sort(int array[]){
        int digitcount=10;//0-9共有10
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值