Sort summary2

一旦跳出了“排序就比较”这个思维,那我们就有可能实现更低的复杂度,当然代价就是对输入的数据有一定的限制。

1,count 限制条件就是元素的数值在(0,k), 最好不要出现负数(虽然有些也是可以解决),值不要太大(具体就是值的跨度不要太大),基本思路就是开辟K个空间,统计数组中小于i的个数,然后以数组逆序遍历直接安放该元素。这里面充满了“hash”的味道,相当于每个数都有一个独立的空间来对应,避免了“比较”, 得到O(K+N),无论是空间还是时间,K不能太大,否则失去意义。

2,radix 显然扩大了排序的限制条件,至少数值可以更大

3,bucket 限制条件为数据的统计贴近均匀分布, 其实还是hash 的作用,假设输入数据均匀分布,那么将其归一[0,1), 最理想情况下,划分为n个bucket,刚好每个元素落入一个bucket(这其实就是hash),,然后顺序输出即可,当然对于那些接近均匀分布的可以证明也可以实现O(n), 当然他需要额外的空间(毕竟是hash嘛)!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值