最近遇到一个问题:
log1+log2+…+logn这样的复杂度是多少,当时直接想的是nlogn
但是上面加起来应该是logn!的。
这两个应该是相等的,怎么证明呢?
查了下资料:

1、首先由Stirling’s formula:

也就是分子、分母是等价无穷大(n->oo)。

2、再来证明log(n!) 与 nlogn是等价无穷大(n->oo):

挺不可思议的,n! 与 n^n相差很大,但取对数后就相差不了多少了。再上张图:


看图发现两者还不是很“靠近”,我想了一下原因,还是因为极限式的最后一项1/lnn不够小,也就是lnn不够大,对数的增长太慢,这是根本原因啊!不过对数最终还是无穷大。

扩展阅读:

http://en.wikipedia.org/wiki/Factorial

http://en.wikipedia.org/wiki/Gamma_function#Pi_function

http://stackoverflow.com/questions/2095395/answer/submit

http://groups.google.com/group/pongba/browse_thread/thread/0f0f968aaf3aa2e3?pli=1#

http://mindhacks.cn/2008/06/13/why-is-quicksort-so-quick/

转自:http://blog.csdn.net/justme0/article/details/7584108

时间复杂度:O(log1+log2+...+logn)=O(log(n!))=O(nlogn)相关推荐

  1. 基础算法-2: 时间复杂度为O(N*logN)的排序算法

    时间复杂度 O(N*logN): 归并排序,堆排序(大根堆,小根堆,heapInsert/heapify),快速排序(荷兰国旗问题). 归并排序 L - Mid - R 先让 左有序,右有序. 归并 ...

  2. 算法的时间复杂度分析之O(logn)、O(nlogn)

    复杂度分析之O(logn).O(nlogn) 对数阶时间复杂度非常常见,同时也是最难分析的一种时间复杂度.我通过一个例子来说明一下. int i = 1;while (i <= n) {i = ...

  3. 红黑树时间复杂度为什么是O(logn)?

    一.红黑树性质 结点必须是红色或者黑色. 根节点必须是黑色. 叶节点(NIL)必须是黑色(NIL节点无数据,是空节点). 如果一个节点是红色的,则它的子节点必须是黑色的. 从任一节点出发到其每个叶子节 ...

  4. 二分查找的时间复杂度为什么是O(logN)

    二分查找java实现 /*** 二分查找算法:在目标数组中查找是否存在key,存在返回数据下标,不存在返回-1* @param key 要查找的数据* @param arr 需要查找的目标数据* @r ...

  5. 算法学习:我终于明白二分查找的时间复杂度为什么是O(logn)了

    最近发现了个好东西,就是一个学算法的好东西,是网易公开课的一个视频. 直通车 这是麻省理工学院的公开课,有中英字幕,感谢网易.. 也可以在App把视频缓存下来之后再放到电脑上面看,因为我这样可以倍速, ...

  6. 2015.2,对任意正整数n,求xn,要求运算时间复杂度为o(logn).例如x30=x15*x15.

    #include <iostream> using namespace std;int fun(int x,int n) //x的n次方 {if(n==1) return x;if(x%2 ...

  7. a*算法的时间复杂度_算法的时间和空间复杂度,就是这么简单

    算法(Algorithm) 算法是程序用来操作数据.解决程序问题的一组方法.对于同一个问题,使用不同的算法,也许最终得到的结果是一样的,但在过程中消耗的资源和时间却会有很大的区别. 那么我们应该如何去 ...

  8. 看动画轻松理解时间复杂度(一)

    算法(Algorithm)是指用来操作数据.解决程序问题的一组方法.对于同一个问题,使用不同的算法,也许最终得到的结果是一样的,比如排序就有前面的十大经典排序和几种奇葩排序,虽然结果相同,但在过程中消 ...

  9. 一层循环时间复杂度_算法的时间与空间复杂度(一看就懂)

    算法(Algorithm)是指用来操作数据.解决程序问题的一组方法.对于同一个问题,使用不同的算法,也许最终得到的结果是一样的,但在过程中消耗的资源和时间却会有很大的区别. 那么我们应该如何去衡量不同 ...

最新文章

  1. python文件指针_在使用python写入文件之前,如何将文件指针放在上面一行?
  2. php图片长宽处理,PHP重置JPG图片尺寸的函数
  3. springboot+redis实现分布式session共享
  4. php导出csv数据在浏览器中输出提供下载或保存到文件的示例
  5. java list作为参数传递_Java 程序将lambda表达式作为方法参数传递
  6. C++ 构造函数分类以及调用
  7. 如何使用CNN进行物体识别和分类_RCNN物体识别
  8. Spring boot实体类中常用基本注解
  9. Windows Server 2012 将资源发布到 AD DS
  10. matlab2c使用c++实现matlab函数系列教程-cumprod函数
  11. fw150um2.0linux驱动下载,fw150um无线网卡驱动
  12. python的智能算法_基于pythonQT及智能算法的快速规则定制方法与流程
  13. phonegap 总结
  14. Android之monkey Test
  15. 用Python完成毫秒级抢单,助你秒杀淘宝大单
  16. 计算机编程语言排行榜—TIOBE世界编程语言排行榜(2020年6月份最新版)
  17. 微大夫感冒舒缓仪亮相“2018健康陕西发展大会”回顾
  18. 下载配置安装MySql---超详细教程
  19. 蓝桥杯:互质数及其定义
  20. 用Grid Factory生成TBC所需要的大地水准面模型文件

热门文章

  1. 计算机病毒辽师大教案,四年级下信息技术教案计算机病毒知识二辽师大版.docx...
  2. 玩转四方高视:位置营销的模式及创新
  3. 蘑菇街 java 面试_校招|蘑菇街java后端三面
  4. es 时间过滤java,Elasticsearch过滤与聚合的先后顺序java实现
  5. 如何在高德离线地图上画面源代码
  6. 《红楼梦》的读后感范文2300字
  7. 识骨寻踪第一季/全集Bones迅雷下载
  8. 提高firefox扩展开发效率
  9. Organization Chart
  10. Pravega 学习