码迷,mamicode.com
首页 > 编程语言 > 详细

排序算法到底能不能突破nlog(n)时间复杂度?

时间:2016-08-06 23:12:18      阅读:1063      评论:0      收藏:0      [点我收藏+]

标签:

今天在刷算法意外发现排序算法通过二分查找改进可以得到log2(n!)的时间复杂度。

先看张各个时间复杂度的图形。

这是使用desmos画出来的图形。主要对比xlog(x), x^2, log(x!), log(x), x的图形。

 

技术分享

 

再上张大点图片

技术分享

 

通过图形对比log(x!)低于xlog(x)高于x,但通常我们的排序算法快排和归并的最优是xlog(x)最坏是n^2, 通过二分查找改进的排序算法最坏是log(n!),最好是n。

虽然nlog(n)和log(n!)相差不是特别大,我们可以看到当x=120时log(n!)相对于nlog(n)就能提高25%, 我也在想这么效率高的排序我这么蠢都想出来了,网上各位大牛应该也早就知道了。它之所以在网上没有出现(出现率太低)也是有原因,只有在使用链表存储时才能达到时间复杂度是log(n!),如果使用数组,由于数组插入和动态扩容所消耗的时间复杂度是n^2,,,,下次写实现

 

排序算法到底能不能突破nlog(n)时间复杂度?

标签:

原文地址:http://www.cnblogs.com/Roysatm/p/5744937.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!