结构推理 如果doIt这个算法的复杂度为n2,那么计算下面这个程序段的时间代价:
   int i=1;
   while(i<=n)
   {
       doIt(…);
       i=i*2;
   }
【正确答案】循环控制变量i从1增加到n,循环体只能执行[log2n]-1次,所以该程序段总的时间代价为:
   T(n)=1+log2n+(log2n-1)(n2+1)+1
   =n2log2n+2log2n-n2+1
   =O(n2log2n)
【答案解析】