假设n是描述问题规模的非负整数,下面程序片段的时间复杂度为( )。void fun(int n){int i,j,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。所以, T(n)=∑
n
i=1
∑
n
j=1
m=m∑
n
i=1
∑
n
j=1
=mn
2
=n
2
log
5
n=O(n
2
log
5
n)