标签:
今天在刷算法意外发现排序算法通过二分查找改进可以得到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,,,,下次写实现
标签:
原文地址:http://www.cnblogs.com/Roysatm/p/5744937.html