是O(log3(n))。
分析:
第1次循环进入后i=3(3^1),
第2次循环进入后i=9(3^2),
假设第k次循环是最后一次循环,则进入后i=3^k,同时有3^k等于n,所以k=log3(n),时间复杂度为O(log3(n))(即以3为底,n的对数)。
首先要明白队列是 先进先出
InQueue(Q,'H');
InQueue(Q,'R');
InQueue(Q,y); //现在队列内容从前到后依次是HRC
OutQueue(Q,x);InQueue(Q,x); //,H 出队列,并且把H赋于x,然后x='H' 入队列,现在队列内容从前到后依次是RCH
OutQueue(Q,x);InQueue(Q,'A'); //,R 出队列,并且把H赋于x,注意现在x=‘R’,因为最后输出的x,就是R;然后 'A' 入队列,现在队列内容从前到后依次是CHA
while(!QEmpty(Q))
{OutQueue(Q,y);
printf(y);
}//这个循环依次输出CHA
printf(x);//输出R
{printf("%3d",x-=2);}
这个就是x=x-2,也就是说x变成1了再输出,输出1
--x就是x=x-1的简便写法,这时候x变成0,!0就是1,所以继续做do这个循环
第二次x再减去2变成-2,所以输出-2
--x再减去1变成-3,!-3为0所以循环做到这就停止了
最后输出
1
-2
以上就是关于C语言,下面程序段的时间复杂度是多少全部的内容,包括:C语言,下面程序段的时间复杂度是多少、数据结构C语言:写出些列程序段的输出结果。、c语言的问题,程序段如下 int x=3 do{printf("%3d",x-=2);} while(!(--x))等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)