- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PAGE
PAGE # / 37
1.绪论
1.将下列复杂度由小到大重新排序:
A.2nB.n!C.n5
【答】 10 000n*log
2(n)n5 2nn!
2.将下列复杂度由小到大重新排序:
A.n*log
2(n)B.n+n2+n3
【答】 24n0.5n*log
2(n) n+n2+n3
3.用大“ C”示法描述下列复杂度:
A.5n5/2+n2/5
3n4+n* log
2(n)
【答】 A: C (n5/2)B: C (n)D. 10 000E. n*log
2(n)C. 24D. n0.5B. 6*log
2(n) + 9n
5n2+n3/2
C: C (n4)D: C (n2)4.按照增长率从低到高的顺序排列以下表达式:
4n2,log3n,3n,20n,2000,log2n,n2/3。又 n!应排在第几位?
【答】按照增长率从低到高依次为: 2000, log
3n, log
2n,n2/3, 20n, 4n2, 3n。
n!的增长率比它们中的每一个都要大,应排在最后一位。
计算下列程序片断的时间代价:
int i=1;
while(i=n)
{
printf( “ i=n%”d,i);
i=i+1;
}
【答】循环控制变量i从1增加到n,循环体执行n次,第一句i的初始化 执行次数为1,第二句执行n次,循环体中第一句printf执行n次,第二句i从 1循环到n,共执行n次。所以该程序段总的时间代价为:
T(n) = 1 +n+ 2n= 3n+ 1 =O(n)
计算下列程序片断的时间代价:
int i=1;
while(i=n)
{
int j=1;
while(j=n)
{
int k=1;
while(k=n)
{
printf( “ i=%d,j=%d,k=n%”d,I,j,k);
k=k+1;
}
j=j+1;
}
i=i+1;
}
【答】循环控制变量i从1增加到n,最外层循环体执行n次,循环控制变 量j从1增加到n,中间层循环体执行n次,循环控制变量k从1增加到n,最 内层循环体执行 n 次,所以该程序段总的时间代价为:
T(n) = 1 +n+n {1 +n+n[1 +n+ 2n+1] +1 +1 + 1
= 3n3+ 3n2+4n+2
=O(n3)
2.线性表
1 .试写一个插入算法 int insertPost_seq(palist, p, x ),在 palist 所指顺序表 中,下标为 p 的元素之后,插入一个值为 x 的元素,返回插入成功与否的标 志。
【答】
数据结构
采用 2.1.2 节中顺序表定义。
int insertPost_seq(PseqList palist, int p, DataType x ) {
/*在palist所指顺序表中下标为p的元素之后插入元素x */
int q;
if ( palist- n = palist- MAXNUM ) {
pri ntf( “ Overflow” );
retur nO;
}
if (p0||ppalist- n-1 ){
printf( “ Not exis”! );return 0;
}
for(q=palist-n - 1; q=p+1; q--)/*插入位置及之后的元素均后移一个位置 */
palist-eleme nt[q+1] = palist-eleme nt[q];
palist-eleme nt[p+1] = x;
palist- n 二 palist- n + 1;
return 1;
}/*插入元素x */
/*元素个数加1 */
/*不存在下标为p的元素*/
/*溢出*/
2试写一个删除算法deleteV_seq(palist, x,在palist所指顺序表中,删除一 个值为x的元素,返回删除成功与否的标志。
【答】
数据结构
采用2.1.2节中顺序表定义。
in tdeleteV_seq(PseqList palist, p, DataType x ) {
/*在palist所指顺序表中删除值为x的元素*/
int p,q;
for(p=0;pvn;p++)/*查找值为x的元素的下标*/
if(x==palist-eleme nt[p]){
for(q=p; qpalist- n-1; q++) /*被删除元素之后的元素均前移一个位置*/
palist-eleme nt[q] = palist-eleme nt[q+1];
palist- n 二 palist- n - 1;
return 1 ;/*元素个数减1 */
}
return 0;
}
3.设有一线性表e = (e
0, e
1, e
2,,, e
n 1),其逆线性表定义为e = (e
n 1,,, e
2, e
1,e
0)
原创力文档


文档评论(0)