设n是描述问题规模的非负整数,下面程序片段的时间复杂度是( )。 void fun(int n){ int i,k; for(i=1;i<=n;i++) for(j=1;j<=n;j++){ k=1: while(k<=n)k=5*k; } }
【正确答案】 C
【答案解析】解析:基本运算语句是k=5*k,设其执行时间为T(n)。 对于j每循环一次,该语句的执行次数为m,有:5 m ≤n,即m≤log 5 n。所以: