算法导论第三版习题7.4
2016-02-29 17:16
232 查看
7.4-1
我们可以猜测T(n)≥cn2T(n)\ge cn^2:T(n)≥max0≤q≤n−1[cq2+c(n−q−1)2]+Θ(n)=max0≤q≤n−1[cq2+c(n−q−1)2]+Θ(n)=cn2−2cn+c+Θ(n)≥cn2−2cn+Θ(n)≥cn2\begin{align}
T(n)&\ge \max_{0\le q\le n-1}[cq^2+ c(n-q-1)^2]+\Theta(n)\\
&=\max_{0\le q\le n-1}[cq^2+c(n-q-1)^2]+\Theta(n)\\
&=cn^2-2cn+c+\Theta(n)\\
&\ge cn^2-2cn+\Theta(n)\\
&\ge cn^2
\end{align}
最后一步可以使cc为恰当的数,与Θ(n)\Theta(n)抵消得到。
7.4-2
在最好的情况下,数组每次都被分成⌊n/2⌋和⌈n/2⌉−1\lfloor n/2\rfloor和\lceil n/2 \rceil-1规模的两个字问题,故算法的复杂度为T(n)=T(⌊n/2⌋)+T(⌈n/2⌉−1)+Θ(n)T(n)=T(\lfloor n/2\rfloor) + T(\lceil n/2 \rceil-1)+\Theta(n)假设T(n)≥cnlgnT(n)\ge cnlgn:
T(n)≥c⌊n/2⌋lg⌊n/2⌋+c(⌈n/2⌉−1)lg(⌈n/2⌉−1)+Θ(n)≥cn/3lg(n/3)+cn/3lg(n/3)+Θ(n)≥2cn/3lgn−2cnlg3+Θ(n)≥2cn/3lgn\begin{align}
T(n)&\ge c\lfloor n/2\rfloor lg\lfloor n/2 \rfloor + c(\lceil n/2\rceil -1)lg(\lceil n/2\rceil -1)+\Theta(n)\\
&\ge cn/3lg(n/3)+cn/3lg(n/3)+\Theta(n)\\
&\ge 2cn/3lgn-2cnlg3+\Theta(n)\\
&\ge 2cn/3lgn
\end{align}
最后一步可以令2cnlg32cnlg3足够大使2cnlg3−Θ(n)<02cnlg3-\Theta(n)\lt 0从而使不等式成立。故T(n)=Ω(nlgn)T(n)=\Omega(nlgn)
7.4-3
直接对q2+(n−q−1)2q^2+(n-q-1)^2对qq求导并使导数为0可求得q=(n−1)/2q=(n-1)/2,故该二次函数的最小值在区间的正中间,那么最大值就在区间的两个端点上取得。7.4-4
同样的,E(X)=∑i=1n−1∑j=i+1n2j−i+1=∑i=1n−1∑k=1n−i2k+1≥∑i=1n−1∑k=1n−i22k=∑i=1n−1Ω(lgn)=Ω(nlgn)E(X)=\sum_{i=1}^{n-1}\sum_{j=i+1}^n\frac{2}{j-i+1}=\sum_{i=1}^{n-1}\sum_{k=1}^{n-i}\frac{2}{k+1}\ge \sum_{i=1}^{n-1}\sum_{k=1}^{n-i}\frac{2}{2k}=\sum_{i=1}^{n-1}\Omega(lgn)=\Omega(nlgn)
7.4-5
此时快速排序的层数为n⋅(12)x≤kn\cdot(\frac{1}{2})^x\le k的解lgnklg\frac{n}{k},则快速排序阶段的时间复杂度为O(nlgnk)O(nlg\frac{n}{k});然后进行插入排序,由于只有每个长度小于kk的子数组内部没有排序,所以在插入排序过程中,每个元素不再需要和它前面所有的元素相比较,而最多只需要比较kk次,一共有nn个元素,所以插入排序过程的时间复杂度为O(nk)O(nk),总的时间复杂度为O(nk+nlgnk)O(nk+nlg\frac{n}{k})
7.4-6
要使最坏划分比例为a:(1−a)a:(1-a),则必须选出的三个数至少有两个是在数组的前面anan个数中,故概率是C23a2=3a2C_3^2a^2=3a^2相关文章推荐
- jQuery对表单表格的操作
- Oracle类型修改
- Android SDK Manager 设置代理
- php权限管理的一些细节问题
- maven,spring,mybatis集成错误
- Maven仓库-Nexus环境搭建及简单介绍
- paper 33 :[教程] 如何使用libsvm进行分类
- 管理Sass项目文件结构
- C# Split 字符串转成List<int>
- 年终总结--2015年,曲折的路往往风景更加精彩
- 老李分享:HTTP session原理及应用 1
- AngularJS进阶(三十六)AngularJS项目开发技巧之利用Service&Promise&Resolve解决图片预加载问题(后记)
- Repository mirror 解析
- PAT 1101. Quick Sort (25)
- MSVC编译链接问题
- 用SIFT特征和RANSAC算法进行两幅图片的匹配
- QT中对XML的处理
- AngularJS进阶(三十六)AngularJS项目开发技巧之利用Service&Promise&Resolve解决图片预加载问题(后记)
- IOS 开发 证书显示 此证书签发者无效 解决办法
- Acceptor-Connector模式系列