基数排序之使用队列优化

在博主的上一篇文章里图解了基数排序的原理和代码实现,本文对上一篇文章里的实现方法做一些优化,如果没有看过的小伙伴可以移步上一篇文章:

《八种排序算法之七:图解基数排序》

https://mp.youkuaiyun.com/mdeditor/87302788#

在上一篇的基数排序中,我们比喻了十个桶来存储每次循环得到的余数,并且需要把桶内的元素按照“ 先放进来,先拿出去 ” 的原则拿出,重新组成数组,作为下一轮循环的开始数组。

我们为此还使用了二维数组,又专门写了一个数组去存储桶内元素的位置信息,在取出时方便拿出。

但我们做到关心放入“桶”内元素的位置吗?
还是说我们只需要做到先放进去的先拿出来就可以了?

手动分割线,大家可以自己先思考一下。


细心的小伙伴可能就已经明白,这个 “ 先进先出 ”的原则不就正是队列的特征么,完全可以使用队列来达成这一目的。

基于这个想法,我们直接调用队列的那个类(在文章后面有队列类的代码),使用队列来替换原有的二维数组。

// 用于临时存储数据的十个队列
		MyQueueRadixSort[]  temp = new MyQueueRadixSort[10];

然后把循环找的数据放在队列中,使用队列的方法

// 用于临时存储数据的十个队列
		MyQueueRadixSort[]  temp = new MyQueueRadixSort[10];

在每一轮

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值