Java桶排序算法并添加了桶排序去重(简单版)

本文介绍了简化版的Java桶排序算法,强调这并非完整的桶排序,而是为了便于理解。桶排序适用于数据均匀分布的情况,通过将数组分配到有限数量的桶中进行排序,具有线性时间复杂度。文章还提到了桶排序的局限性和时间复杂度推导,并给出了解决方案,特别指出在打印过程中可以实现去重功能。
摘要由CSDN通过智能技术生成

桶排序算法


注意:这不是真正的桶算法,这是一个简单版的桶算法,因为比较容易让人理解,所以这是简化版,真正的桶算法要比这个复杂的多的多!请大家不要误会!只是为了考虑到大家让大家明白!OK!


用算法锻炼运算逻辑思维是一个好的想法,所以我初入算法,打算来锻炼我的运算逻辑思维!以后的日子也会研究一些简单的算法,给大家通俗易懂的解决办法!(争取让大家都能明白,小白也易懂)最起码我都能懂,比我聪明的你们研究一下更会懂得,哈哈!(滑稽)


什么是桶排序?
桶排序 (Bucket sort)或所谓的箱排序,是一个排序算法,工作的原理是将数组分到有限数量的桶子里。每个桶子再个别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排序)。桶排序是鸽巢排序的一种归纳结果。当要被排序的数组内的数值是均匀分配的时候,桶排序使用线性时间(Θ(n))。但桶排序并不是 比较排序,他不受到 O(n log n) 下限的影响。

桶排序称为最快的排序,因为他不用遍历多次,直接入桶便已经是排好的顺序,打印即可。缺点是有局限性,所谓的时间换空间吧!
关于桶排序的时间复杂度推导,即使数据不服从均匀分布,只有输入数据满足下列性质:所有桶的大小的平方和与总的元素数呈线性关系,那么桶排序仍然能在线性时间完成。

下面的解题方法的桶排序虽然有局限性,但是假如把数据装在集合里可以没有那么大的局限性。
在此先详解,后带来简单易懂的桶排序解决方案。


详解:
在这里插入图片描述
a[0]为0,表示“0”没有出现过,不打印
a[1]为0,表示“1”没有出现过,不打印
a[2]为1,表示“2”出现过1次,打印2
a[3]为1,表示“3”出现过1次,打印3
a[4]为0,表示“4”没有出现过,打印
a[5]为2,表示“5”出现过2次,打印5、5
a[6]为0,表示“6”没有出现过,不打印
a[7]为0,表示“7”没有出现过,不打印
a[8]为1,表示“8”出现过1次,打印8
a[9]为0,表示“9”没有出现过,不打印
a[9]为0,表示“10”没有出现过,不打印

最终打印结果就是:2、3、5、5、8



                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值