排序二三

  • Sleep sort
    • Sleep sort使用n个进程处理n个待排序数据,进程每隔i个计时单位输出i,即对于如1,3,5,7的待排序序列,计数到1输出1,计数到3输出3,以此类推。可以看出,最坏情形下如排序(0 218382)需等待218382个计时单位。
    • 其时间复杂度的分析见What is the time complexity of the sleep sort?
  • Timsort,用于python的list.sort中,处理已部分有序的数据。
  • Introsort,用于C++ std::sort。和timsort都是一种混合排序算法。
  • 猴子排序(Bogo sort),来源于"无限猴子定理的表述如下:让一只猴子在打字机上随机地按键,当按键时间达到无穷时,几乎必然能够打出任何给定的文字,比如莎士比亚的全套著作"。关键点在于“随机”,随机得好一次出结果,随机得不好就是一只猴子请来的逗b。
  • 松式基数排序,来源于WC 2017上王逸松使用256作为基数,以实现在特定有限缓存资源下性能的提升。
  • 张仰彪排序算法,其实就是一个cycle sort,CS民科的一大奇闻异事。
  • Quadsort,看完quad swap觉着“就这?”但看在1.4k star的份上,总归有什么惊人之处吧,还未细看,加之github界面有几个图加载不出来,后续再有了解另行补充,或有小伙伴看懂了望不吝赐教。
  • 知乎排序其一(暂时以此名代称吧)。对于比较类的排序算法,其理论下界无论是从信息论还是决策树均可证出为O(nlgn)。从空间复杂度上来说,冒泡排序、选择排序、堆排序等需要一个临时变量来交换元素位置的排序算法的空间复杂度为O(1);快速排序因递归调用空间复杂度为O(lgn) ;归并排序需要一个大小为n的临时数组存储中间排序结果,其空间复杂是O(n)。而通过空间换时间的非比较类排序算法如基数排序其空间复杂度为O(n)。该知乎题主指出自己算法的空间复杂度为“快O(n),慢O(nlgn),空间O(n)”,相比快排的空间复杂度来说其需要额外的空间开销,假设题主算法无误,有几倍的增速不足为奇,但还是没看到题主的code or paper。最新回复是“抱歉,不是传统的比较排序和索引排序。也不会无聊到写丑快排或if有序[飙泪笑]。因为cache机制问题我实在没法解决,所以很久不搞这个了”。看起来题主有从体系结构入手的意图啊。。。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值