设n是描述问题规模的非负整数,下面程序片段的时间复杂度是( )。x=2;while(xA.O(log2n)B.O(n)C.O(nlog2n)D.O(n^2)

设n是描述问题规模的非负整数,下面程序片段的时间复杂度是( )。x=2;while(x
A.O(log2n)
B.O(n)
C.O(nlog2n)
D.O(n^2)

参考解析

解析:程序中执行最多的语句是“x=2*x”,也就是意味着2^x=n,求x。

相关考题:

下面程序段的时间复杂度为()。y=n;while(y>1)y=y/2;

描述 \X 是小于 100 的非负整数 \ 的 Visual Basic 表达式是______。

阅读下列程序说明和C++代码,将应填入(n)处。【说明】“背包问题”的基本描述是:有一个背包,能盛放的物品总重量为S,设有N件物品,其重量分别为w1;w2,……,wn,希望从N件物品中选择若干件物品,所选物品的重量之和恰能放入该背包,即所选物品的重量之和等于S。如下程序均能求得“背包问题”的一组解,其中程序4.1是“背包问题”的递归解法,而程序4.2是“背包问题”的非递归解法。【程序4.1】include<stdio.h>define N 7define S 15int w[N+1]={0,1,4,3,4,5,2,7};int knap(int s,int n){ if(s==0)return 1;if(s<0||(s>0 n<1))return 0;if((1)))|printf("%4d",w[n]);return 1;} return (2);}main(){if(knap(S,N))printf("OK!\n");else printf("NO!\n");}【程序4.2】include<stdio.h>define N 7define S 15typedef struct{int s;int n:int job;} KNAPTP;int w[N+1]={0,1,4,3,4,5,2,7};int knap(int s,int n);main(){if(knap(S,N))printf("OK!\n");else printf("NO!\n");}int knap(int s,int n){ KNAPTP stack[100],x;int top,k,rep;x.s=s;x.n=n;x.job=0;top=|;Stack[top]=x;k=0;while((3)){x=Stack[top];rep=1;while(!k rep){if(x.s==0)k=1;/*已求得一组解*/else if(x.s<0||x.n <=0)rep=0;else{x.s=(4);x.job=1;(5)=x;}}if(!k){rep=1;while(top>=1rep){x=stack[top--];if(x.job==1){x.s+=W[x.n+1];x.job=2;Stack[++top]=x;(6);}}}}if(k){/*输出一组解*/while(top>=1){x=staCk[top--];if(x.job==1)printf("%d\t",w[x.n+1]);}}return k;}

下面是一段Pascal程序: for h:=1 tO n-1 dO begin x:=A[h+1]; k:=h; while (k>=1) and (A[k]>x) do begin A[k+1):=A[k]; k:=k-1 end; A[k+1]:=x end; 假设在程序开始执行时,数组A[1..n)是一组随机整数。下列答案中,哪一个最好的描述了最差情况下的程序执行时间(运行时间阶数)?( )A.0(nlog2n)B.O(n)C.0(log2n)D.O(n2)

设R、N分别表示实数、整数和自然数集,下面定义函数f1、f2、f3:f1:R→R,f(x)=2xf2:N→N×N,f(n)=f 设R、N分别表示实数、整数和自然数集,下面定义函数f1、f2、f3: f1:R→R,f(x)=2x f2:N→N×N,f(n)=<n,n+1> f3:N→N,f(x)=x mod 3,x除以3的余数 则下面说法正确的是( )。A.f1和f2是单射但不是满射函数B.f1和f3都是满射函数C.f2是双射函数D.以上说法全都是错误的

( 6 ) 描述 “ X 是小于 100 的非负整数 ” 的 Visual Basic 表达式是 【 6 】 。

下面这个程序段的时间复杂度是( )。 for (i=1; i<n; i++) { y=y+3; for (j=0;j<=(2*n);j++) x++; }A.O(log2n)B.O(n)C.O(nlog2n)D.O(n2)

下面是一段Pascal程序: for h:=1 to n-1 do begin x:=A[h+1]; k:=h; while(k>=1)and(A[k]>x)do begin A[k+1]:=A[k]; k:=k-1 end; A[k+1]:=x end; 假设在程序开始执行时,数组A[1…n)是一组随机整数。下列答案中,最好地描述了最差情况下的程序执行时间(运行时间阶数)的是A.O(n log2n)B.O(n)C.O(log2n)D.O(n2)

阅读下列程序说明和C代码,将应填入(n)处的字句写在对应栏内。【说明】“背包问题”的基本描述是:有一个背包,能盛放的物品总重量为S,设有N件物品,其重量分别为w1,w2,…,wn。希望从N件物品中选择若干件物品,所选物品的重量之和恰能放入该背包,即所选物品的重量之和等于S。如下程序均能求得“背包问题”的一组解,其中程序1是“背包问题”的递归解法,而程序2是“背包问题”的非递归解法。【程序1】include<stdio.h>define N 7define S 15int w[N+1]={0,1,4,3,4,5,2,7};int knap(int s, int n){if(s==0) return 1;if(s<0 || (s>0 n<1))return 0;if((1)){/*考虑物品n被选择的情况*/printf("%4d",w[n]);return 1;}return (2);/*考虑不选择物品n的情况*/}main(){if(knap(S,N))printf("OK!\n");else printf("N0!\n");}【程序2】include<stdio.h>define N 7define S 15typedef struct{int s;int n;int job;}KNAPTP;int w[N+1]={0,1,4,3,4,5,2,7};int knap(int s, int n);main(){if(knap(S,N)) printf("0K!\n");else printf("N0!\n");}int knap(int s, int n){KNAPTP stack[100],x;int top, k, rep;x.s=s;x.n=n;x.job=0;top=1; stack[top]=x;k=0;while( (3) ){x=stack[top];rep=1;while(!k rep){if(x.s==0) k=1;/*已求得一组解*/else if(x.s<0 || x.n<=0) rep=0;else{x.s=(4);x.job=1;(5)=x;}}/*while*/if(!k){rep=1;while(top>=1 rep){x=stack[top--];if(x.job==1){x.s +=w[x.n+1];x.job=2;stack[++top]=x;(6);}/*if*/}/*while*/}/*if*//*while*/if(k){&nbs

若x是int型变量,且有下面的程序片段: for(x=3;x<6;x++)printf(x%2)?("* *%d"):(”# #%d\n”),x); 上面程序片段的输出结果是 ( )A.* * 3 # # 4 * * 5B.# # 3 * * 4 # # 5C.# # 3 * * 4 # # 5D.* * 3 # # 4 * * 5

下面程序的执行结果是【】。include void main(){int n=0,x=0;do{n++;if(n%3==2do{n++;if(n%3==2n%5==3n%7==2)x=1;}while(x!=1);cout<<"n=" <<n<<end1;}

执行下面程序片段的结果是( ) int x=23; do { printf("%2d",x--);} while(! x);A.打印出321B.打印出23C.不打印任何内容D.陷入死循环

设n为正整数。则下面程序段的时间复杂度为()。 i=1;k=0; while(i A.O(1)B.O(nC.O(nlogn)D.O(n2)

设n为正整数。则下面程序段的时间复杂度为()。 k=0; for(i=1;i A.O(1)B.O(n)C.O(nlogn)D.O(n2)

下面的程序输出结果是______。 main() { int x=3; while(!(--x)) printf("%d\n",x-=2); }A.不执行循环体B.1C.0D.是死循环

以下程序是用来计算两个非负数之间的最大公约数我们假设x,y中最大的那个数的长度为n,基本运算时间复杂度为O(1),那么该程序的时间复杂度为()A.O(1)B.O(logn)C.O(n)D.O(n^2)

有以下程序段下面针对上述程序段的描述正确的是A.最多可以输出100个非负整数B.当x0时结束整个循环C.当X=0时没有任何输出D.pfinff函数调用语句总是被跳过

执行下面程序片段的结果是( ) int x=123; do { printf("%3d\n",x--);} while(!x);A.打印出321B.打印出123C.不打印任何内容D.陷入死循环

下面的程序 main( ) { int x=3; do{printf("%d\n",x-=2);} while(!(- -x)); }A.输出的是1B.输出的是1和-2C.输出的是3和0D.是死循环

下面所给出的算法的时间复杂度为(56)。(n为大于1的数)x=n;y=1;while(x>y*y){y++;}A.B.C.D.

给定包含n个正整数的数组A和正整数x,要判断数组A中是否存在两个元素之和等于x,先用插入排序算法对数组A进行排序,再用以下过程P来判断是否存在两个元素之和等于x。low=1;high=n;while(high>low)if A[low]+A[high]=x return true;else if A[low]+A[high]>x low++;else high--;return false;则过程P的时间复杂度为( ),整个算法的时间复杂度为(请作答此空)。A.O(n)B.O(nlgn)C.O(n2)D.O(n2lgn)

下面程序段的时间复杂度为()。 i=1; while(i=n)i=i*3;A、O(n)B、O(3n)C、O(log3n)D、O(n3)

下面程序段的时间复杂度是() i=1; while(i<=n) i=i*3;

单选题设有程序段 i=1; while (i=n) i=i*2; 上面程序段的时间复杂度为()。AO(n)BO(log n)CO( nlog n)DO(n2)

单选题设语句x++的时间是单位时间,则以下语句的时间复杂度为()。 for(i=1;i=n;i++) for(j=i;j=n;j++) x++;AO(1)BO(2n2)CO(n)DO(3n3)

单选题下面程序段的时间复杂度为()。 i=1; while(i=n)i=i*3;AO(n)BO(3n)CO(log3n)DO(n3)

填空题下面程序段的时间复杂度是() i=1; while(i<=n) i=i*3;