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

比较排序算法时间复杂度下界为nlogn的证明

时间:2016-04-23 22:49:38      阅读:668      评论:0      收藏:0      [点我收藏+]

标签:

比较排序算法的时间复杂度是O(nlogn)的证明:

排序算法的比较是两两进行的,所以可以抽象成一棵二叉树,相互比较的数分别是左右叶子结点,,比较的结果存储在父节点中,依此类推。那么算法的时间复杂度就是取决于树的深度。如果要对n个数字进行比较排序,则需要进行n!次,即该二叉树有n!片叶子。

一棵深度为d的二叉树拥有的叶子结点数最大为2d个,则具有n!片叶子的二叉树的深度为logn!。

logn!=logn+log(n-1)+log(n-1)+…+log(2)+log(1)≥logn+log(n-1)+log(n-2)+…+log(n/)

≥(n/2)log(n/2)≥(n/2)log(n/10)

≥(n/2)logn-(n/2)log10=(n/2)logn=O(nlogn)

所以比较排序的算法时间复杂度为O(nlogn)

比较排序算法时间复杂度下界为nlogn的证明

标签:

原文地址:http://www.cnblogs.com/auto1945837845/p/5425760.html

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