假设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;

admin2019-12-10  24

问题 假设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;
   }
}

选项 A、O(n2log2n)
B、O(nlog5n)
C、O(n2log5n)
D、O(n3)

答案C

解析 首先抓基本运算语句,即k=5*k;设其执行时间为T(n)。对于j每循环一次,该语句的执行次数为m,有5m≤n,即m≤log5n。所以,
    T(n)=∑ni=1nj=1m=m∑ni=1nj=1=mn2=n2log5n=O(n2log5n)
转载请注明原文地址:https://kaotiyun.com/show/7G3i777K
0

相关试题推荐
最新回复(0)