算法导论第三版习题7.2
2016-02-29 14:16
267 查看
7.2-1
令Θ(n)=cn\Theta(n)=cn,带入递归式可得:T(n)=T(n−1)+Θ(n)=T(n−1)+cn=c∑i=1ni=c⋅n(n+1)2=Θ(n2)T(n)=T(n-1)+\Theta(n)=T(n-1)+cn=c\sum_{i=1}^ni=c\cdot \frac{n(n+1)}{2}=\Theta(n^2)
7.2-2
当数组A的所有元素都具有相同值时,此时出现最坏情况,每次划分会出现大小为0和n−10和n-1的子数组,此时时间复杂度为Θ(n2)\Theta(n^2)。7.2-3
当数组A的所有元素不同,且按降序排列时,那么每次PARTITION操作都会划分出大小为0和n−10和n-1的两个子数组,出现的是最坏的情况,此时QUICKSORT的时间复杂度为Θ(n2)\Theta(n^2)。7.2-4
假设序列中倒序对有dd对,那么插入排序的时间复杂度为Θ(n+d)\Theta(n+d)。由于该序列几乎为有序序列,所以dd非常小,插入排序时间复杂度接近Θ(n)\Theta(n);而用QUICKSORT时,因为序列几乎有序,所以会经常出现空子数组,所以QUICKSORT性能会很不好,时间复杂度接近Θ(n2)\Theta(n^2)7.2-5
当子数组大小小于或等于1的时候为叶子节点,显然最小深度为不等式nax≤1na^x\le 1的解:nax≤1ax≤1nx≥lga1n=−lgn/lga
na^x\le 1\\
a^x\le \frac{1}{n}\\
x \ge lg_a\frac{1}{n}=-lgn/lga\\
所以最小深度为−lgn/lga-lgn/lga。
同理,最大深度为不等式n(1−a)x≤1n(1-a)^x\le 1的解,为−lgn/lg(1−a)-lgn/lg(1-a)。
7.2-6
显然,要产生1−a:a1-a:a划分,则该子数组的最后一个数必须为该数组的第n(1−a)n(1-a)大的数;而要产生比1−a:a1-a:a更好的划分,则数组最后一个数必须是na≤x≤n(1−a)na\le x \le n(1-a),因为输入随机,最后一个数在数组中的大小次序概率相等,所以产生比1−a:a1-a:a更好的划分的概率为n(1−a)−nan=1−2a\frac{n(1-a)-na}{n}=1-2a相关文章推荐
- MySQL三大范式和反范式
- Firefox,火狐about:config设置详解
- 如何把"设置--安全--未知来源“默认打开(mtk)
- 微软的自动更新问题,导致svchost.exe占用cpu超过50%
- python的类变量和成员变量用法实例教程
- 无线轮播
- iOS7——UIControlEventTouchDown延迟响应问题
- 55个最实用大数据可视化分析工具
- 不用密码的用户系统实现
- Android常见控件— — —Button
- nsq源码阅读笔记之nsqd(四)——Channel
- 带参数的 main()
- 关于java以竖线作为分隔符split字符串的问题
- 关于Category中增加属性的问题
- JSP页面中注释<!-- --> 和 <%-- --%>的区别
- Google Chart API
- 1048 Find Coins
- css获取背景中指定的位置
- 前端错误知识提示积累
- 文件分割和合并