算法复杂度习题 下载本文

一、选择题

1.个算法应该是( )。

A.程序 B.问题求解步骤的描述 C.要满足五个基本特性 D. A和C 2.某算法的时间复杂度为O(n2),表明该算法的( )。 A.问题规模是n2 B.执行时间等于n2

C.执行时间与n2成正比 D.问题规模与n2成正比

3.以下算法的时间复杂度为( )。 void fun(int n) { int i=l;

while(i<=n) i=i*2; }

A. O(n) B. O(n2) C. O(nlog2n) D. O(log2n)

4.【2011年计算机联考真题】

设n是描述问题规模的非负整数,下面程序片段的时间复杂度是()。 x=2;

while(x

A. O(log2n) B. O(n) C. O(nlog2n) D. O(n2)

5.【2012年计算机联考真题】

求整数n (n>=0)阶乘的算法如下,其时间复杂度是( )。 int fact(int n){

if (n<=l) return 1; return n*fact(n-1); }

A. O(log2n) B. O(n) C. O(nlog2n) D. O(n2)

6.有以下算法,其时间复杂度为( )。 void fun (int n){ int i=0;

while(i*i*i<=n) i++; }

A. O(n) B. O(nlogn) C. D.

7.程序段

for(i=n-l;i>l;i--) for(j=1;jA[j+l])

A[j]与 A[j+1]对换;

其中n为正整数,则最后一行的语句频度在最坏情况下是( )。

A. O(n) B. O(nlogn) C. O(n3) D. O(n2)

8.以下算法中加下划线语句的执行次数为()。 int m=0, i, j; for(i=l;i<=n;i++)

for(j=1;j<=2*i;j++) m++;

A. n(n+1) B. n C. n+1 D. n2

9.下面说法错误的是( )。

Ⅰ.算法原地工作的含义是指不需要任何额外的辅助空间

Ⅱ.在相同的规模n下,复杂度O(n)的算法在时间上总是优于复杂度O(2n)的算法 Ⅲ.所谓时间复杂度是指最坏情况下,估算算法执行时间的一个上界 Ⅳ.同一个算法,实现语言的级别越高,执行效率就越低. A. Ⅰ B. Ⅰ、Ⅱ C. Ⅰ、Ⅳ D. Ⅲ

二、综合应用题

1.一个算法所需时间由下述递归方程表示,试求出该算法的时间复杂度的级别(或阶)。

式中,n是问题的规模,为简单起见,设n是2的整数幂。

2.分析以下各程序段,求出算法的时间复杂度。

01.// 程序段① 02.i=l;k=0; 03.while(i

08.// 程序段② 09.y=0;

10.while((y+1)*(y+1)<=n) 11. y=y+1; 12.

13.// 程序段③ 14.for(i=l;i<=n;i++)

15. for(j =1;j <=i;j ++) 16. for(k=l;k<=j;k++) 17. x++;

18.

19.// 程序段④ 20.for(i=0;i

21. for(j=0;j