设n是描述问题规模的正整数,下面程序片段的时间复杂度是( )。i=2j; while(i<n/3) i=i*3;
【正确答案】 A
【答案解析】解析:考查时间复杂度。在程序中,执行频率最高的语句为“i=i*3”。设该基本语句一共执行了k次,根据循环结束条件,有n>2*3 k ≥n/3,由此可得算法的时间复杂度为O(log 3 n)=O(lgn)=O(log 2 n)。 注:题中k=log 3 n,又因log 3 n=lgn/lg3,即k的数量级为lgn,由此可知,在时间复杂度为对数级别的时候,底数数字的改变对于整个时间复杂度没有影响,也可一律忽略底数写为O(log 1 n)。