- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
算法设计与分析练习题_1
算法设计与分析练习题
1. 仅使用Ο、Ω、Θ的定义,证明下列各式成立。
2 2
1) 5n – 6n = Θ(n )
2) n!= Ο(nn)
2 n 2 n
3) 2n 2 + nlogn =Θ(n 2 )
n
2 3
4) i = Θ(n )
∑
i=0
n
3 4
5) i = Θ(n )
∑
i=0
n n
2 n 2
n )
n =Θ (
6) + 6 * 2
3 6 2 3
7) n + 10 n =Θ(n )
2. 下面哪些规则是正确的?为什么?
1) {f(n)=Ο(F(n)),g(n)=Ο(G(n))} → f(n)/g(n)=Ο(F(n)/G(n))
2) {f(n)=Ο(F(n)),g(n)=Ο(G(n))} → f(n)/g(n)=Ω(F(n)/G(n))
3) {f(n)=Ο(F(n)),g(n)=Ο(G(n))} → f(n)/g(n)=Θ(F(n)/G(n))
4) {f(n)=Ω(F(n)),g(n)=Ω(G(n))} → f(n)/g(n)=Ω(F(n)/G(n))
5) {f(n)=Ω(F(n)),g(n)=Ω(G(n))} → f(n)/g(n)=Ο(F(n)/G(n))
6) {f(n)=Ω(F(n)),g(n)=Ω(G(n))} → f(n)/g(n)=Θ(F(n)/G(n))
7) {f(n)=Θ(F(n)),g(n)=Θ(G(n))} → f(n)/g(n)=Θ(F(n)/G(n))
8) {f(n)=Θ(F(n)),g(n)=Θ(G(n))} → f(n)/g(n)=Ω(F(n)/G(n))
9) {f(n)=Θ(F(n)),g(n)=Θ(G(n))} → f(n)/g(n)=Ο(F(n)/G(n))
3. 某算法的计算时间可用下面的递推关系式描述。试采用迭代的方式求解
该关系式,并用大写О表示解(要求给出详细的推导过程)。
a n=1,a 为常数
T (n)=
2T(n/2) + c*n n>1,c为常数
4.下面的算法是依据分治策略设计出来的,仔细阅读该算法回答下列问题
(行号是为了说明问题而设置,它不属于算法本身)。
行号 Void ABC(int w[],int n,int &p,int &q) {
1 //w[0:n-1]中存放了n个整数。p,q是用于返回结果的两个变量
2 if(n<1) return false;
3 if(n 1) { p = q = 0;return true;}
4 int s;
5 if(n%2) { p = q = 0;s = 1;}
6 else {
7 if(w[0]>=w[1]) { p = 1;q = 0;}
8 else { p = 0;q = 1;}
9 s = 2;
10 };
11 for(i=s;i<n;i+=2) {
12 if(w[i]>w[i+1]) {if(w[i]>w[q]) q=i;if(w[i+1]<w[p]) p=i+1;}
13 else{if(w[i+1]>w[q]) q=i+1;if(w[i]<w[p]) p=i;}
14 };//for
15 return t
文档评论(0)