(C)O(n3);
(D)上述都不对;
答案:B 解释:
本题考查时间复杂性,和大“O”记法;具体分析如下: (10) sum=0; 1次 (20) For(i=1; i<=n; i++) n次 (30) For(j=1; j<=n; j++) n2次 (40) For(k=1; k<=5; k++) 5 n2次 (50) sum=sum+1; 5 n2次
T(n)= 11n2 + n + 1 = O(n2),所以正确答案选B; 具体内容请参考课堂视频“高级问题初探: 算法分析与计算复杂性”和第七章课件;
(6)阅读下面的程序,其时间复杂度为_________?
A. O(1) B. O(n) C. O(n2) D. O(n*log n)
int index = 5; int condition=1;
if (condition==1) then index++;
else index--; for i = 1 to 100 for j = 1 to 200 index=index+2;
答案:A 解释: 本题考查时间复杂性,和大“O”记法;具体分析如下:
int index = 5; 1次 int condition=1; 1次 if (condition==1) then 1次 index++; 1次
else index--; for i = 1 to 100 100次 for j = 1 to 200 200×100次 index=index+2; 200×100次 所以T(n)=O(1),正确答案选A; 具体内容请参考课堂视频“高级问题初探: 算法分析与计算复杂性”和第七章课件;
(7)为什么要评估算法的复杂性?下列说法不正确的是_________。
(A)当算法的时间复杂性量级为多项式函数时,计算机是能够完成计算的;
(B)当算法的时间复杂性量级为非多项式函数时,如指数函数、阶乘函数时,计算机是不能够完成计算的;
(C)当算法的时间复杂性量级为非多项式函数时,如指数函数、阶乘函数时,对于大规模问题,计算机是不能够完成计算的;
(D)上述说法有不正确的;
答案:B 解释:
本题考查算法分析与计算复杂性;
当算法的时间复杂度的表示函数是一个多项式时,如O(n2)时,则计算机对于大规模问题是可以处理的。当算法的时间复杂度是用指数函数表示时,如O(2n),当n很大(如10000)时计算机是无法处理的,在计算复杂性中将这一类问题被称为难解性问题。所以对于B的表达,只有当n很大时,属于大规模问题时,计算机才不能完成,表达不精确,所以正确答案为B; 具体内容请参考课堂视频“高级问题初探: 算法分析与计算复杂性”和第七章课件;
(*8)算法的时间复杂性T(n),可以通过评估算法基本语句的执行次数来获得。分析下列算法的时间复杂性。
Start of the algorithm(算法开始)
(1) 输入结点的数目n;
(2) 当前最短路径Path设为空,当前最短距离Dtemp设为最大值;
注:一个路径是n个结点的一个组合,任何一个结点在路经中不能重复出现 (3) 组合一条新路径NewPath并计算该路径的距离D; (4) 如果D
(5) 如果所有路径组合完毕,则结束;否则转第(3)步继续执行; (6) 输出Path及Dtemp; End of the algorith