问和型粗题描述:
for(i=0i<ni++)
for(j=0j<nj++)
for(k=0k<jk++)
x++
请问这个如何计算x++这条语句执行了多少次租局?
请问这种题有没有什么简便算法?
解析:
没什么简便算法
一般推导一两步,然后数学归纳
这道题和i没太大关系,主要看j,k
j=0 k不会执行
j=1 k=0 执行一次
j=2 k=0 k=1 执行两次唤镇
j=n-1 k=0...k=n-2 执行n-1次
也就是在j,k这两个循环内
一共执行
1+2+3+....+(n-1)
=n(n-1)/2
所以总共执行
n*n(n-1)/2
=n^2(n-1)/2
不是n-2次禅蚂芹,而是n次,程序只执行一次,是循环体中的语句执行了n次。这是一个求时间复杂度的问题,该程序段贺毕耗时主要在循环,跟循环体中语句的执行次数有关,k=k+10*i和i++都执行了n次。所以该程序段的时间复杂度的大O表示物困法为O(n)。一般而言没有循环等相关情况下,执行次数野兆为1.语句的乱塌执行次数和程哗脊圆序步数应该不是一个概念。执行次数主要强调的是循环体内的执行次数。而程序步数则从全局来考虑的,一步一步的执行的总和。
希望能采纳。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)