2015年考研核心考点命题思路解密——数据结构——第一章 导论 考点2 算法的时间复杂度和空间复杂度

来源:互联网 发布:淘宝助理数据包怎么做 编辑:程序博客网 时间:2024/06/05 19:49

 

考点2   算法以及算法的时间复杂度和空间复杂度

一.选择题部分

1.        算法必须具备输入、输出和(        )。                                  

A.      计算方法

B.       排序方法

C.       解决问题的有限运算步骤  

D.      程序设计方法


2.        算法分析的两个主要方面是(        )。

A.      空间复杂性和时间复杂性   

B.       正确性和简明性

C.       可读性和文档性

D.      数据复杂性和程序复杂性


3.      算法分析的目的是(        )。

A.      找出数据结构的合理性      

B.       研究算法中的输入和输出的关系

C.       分析算法的效率以求改进    

D.      分析算法的易懂性和文档性


4.      设语句x++的时间是单位时间,则以下语句的时间复杂度为(        )。

           for(i=1; i<=n; i++)

                   for(j=i; j<=n; j++)

                              x++;

A.      O(1)      

B.       O( )

C.       O(n)      

D.      O( )


5.      下面程序段的时间复杂度是(        )。

             for(i=0;i<m;i++)

                         for(j=0;j<n;j++)

                                    a[i][j]=i*j;

       A.O(m2)                      B. O(n2)                C. O(m*n)                    D. O(m+n)

6.  执行下面程序段时,执行S语句的次数为(        )。

             for(int i=1;i<=n;i++)

                    for(int j=1;j<=i;j++)

                           S;

A.      n2      

B.       n2/2      

C.       n(n+1)      

D.      n(n+1)/2

 

二.综合应用题部分

1.        下面程序段的时间复杂度是           

s =0;

for( i =0; i< n; i++)

for(j=0;j< n;j++)

s +=B[i][j];

sum = s ;


2.        下面程序段的时间复杂度是           

for( i =0; i<n; i++)

          for(j=0;j<m;j++)

A[i][j] = 0;


3.        下面程序段的时间复杂度是           

i =1;

while(i<=n)

i = i * 3;

 

 

参 考 答 案

一.选择题部分

1.        C

    【解析】本题考查算法的特性。一个算法应该具有以下五个重要的特征:

(1).    有穷性    算法的有穷性是指算法必须能在执行有限个步骤之后终止;

(2).    确切性    算法的每一步骤必须有确切的定义;

(3).    输入项    一个算法有0个或多个输入,以反映运算对象的初始情况,所谓0个输入是指算法本身定出了初始条件;

(4).    输出项    一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是毫无意义的;

(5).    可行性    算法中执行的任何计算步骤都是可以被分解为基本的可执行的操作步,即每个计算步都可以在有限时间内完成(也称之为有效性)。

2.        A

【解析】本题考查算法性能分析的时间复杂度和空间复杂度。算法时间性能的评价主要使用算法的时间复杂度,算法的空间性能的评价主要采用空间复杂度。

算法的时间复杂度是指执行算法所需要的计算工作量。一般来说,计算机算法是问题规模n 的函数f(n)。

算法的空间复杂度是指算法需要消耗的内存空间,其计算和表示方法与时间复杂度类似,一般都用复杂度的渐近性来表示。同时间复杂度相比,空间复杂度的分析要简单得多。

3.        C

    【解析】本题考查算法分析的目的。对算法的讨论不能只研究它是否能在有穷步内终止,还应对算法的运行效率作出分析,判断算法的好坏,以便在已有的资源条件下作出最佳的决策。算法分析的目的,是评价算法的效率,通过评价选用更加好更加有效的算法来求解问题。

4.        B

【解析】本题考查给定循环语句的时间复杂度分析方法。我们常说的分析算法的时间复杂度,就是分析算法的规模n的函数f(n)。本题中存在着两层for循环,当i=1时,内层循环执行n次,当i=2时内层循环执行n-1次…,分析可知,总共执行了近 次,故而时间复杂度为O( )。

要特别注意,在分析时间复杂度时,我们通常采用抓取大端的办法,进行粗略估计,不会进行详细计算。

5.        C

    【解析】本题考查给定循环语句的时间复杂度分析方法。题中的程序有两层for循环,外层循环执行m次,而每执行一次外层循环,内层循环需要执行n次,故而总共执行mn次,算法的时间复杂度为 。

6.        D

    【解析】本题考查给定循环语句的时间复杂度分析方法。由题中的算法可知,当i=1时,j执行了n次;当i=2时,j执行了n-1次;…;当i=n执行1次。故而,最内层循环总共执行的次数为

最内层循环执行的次数,刚好是我们要分析的时间复杂度。

 

二.综合应用题部分

1.        【解析】本题到第3小题都是考查给定循环语句的时间复杂度分析方法。由算法可以看出,存在两层循环,外层循环执行了n次,而每执行一次外层循环,内层循环需要执行n次,总共执行了 次,故而时间复杂度为 。

 

2.        【解析】本题和选择题第3题相似,只是内外层循环次数发生了调换。本题中,外层循环执行n次,而每执行一次外层循环,内层循环执行m次,仍然总共执行了mn次,所以时间复杂度为 。

 

3.        【解析】从while来看,i的值只可能是3、 。设执行了t次退出了while循环,则t和n满足关系式

可求得执行次数

即本题的程序段的时间复杂度为 .



0 0
原创粉丝点击