基数排序

基数排序思想:先将序列按照个位装入十个组,然后从0到9将各组内数拿出来,按照十位装入是个组,最后以同样的方式按照百位装入,完成操作之后就已经排好序了。

排序图解:

排序代码:

代码设计:

首先将判断所有数字都是多少位,必须将高位为空补零,存为字符串,或者直接通过整数位数求余取整获得数据。

然后使用循环从个位到最高位遍历所有数,分组。

设置分组,每一个分组必须是一个动态数组。

每一次取数,需要按照上一次装入的组从0组开始,取出一个数就装到对应的本次分组的组。

取出的时候,每取空一个组就需要到下一个组取数,因此取数的时候要判断边界。

如果减少代码的复杂度可以每次将组里面的数取出装入原来的数组,再做和第一次取数一样的循环。

时间复杂度:O(d*n)可以简单的看成是O(n)
空间复杂度:动态数组的话空间会少一点,需要2n,如果是十个数组的话,就需要11*n。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值