精华内容
下载资源
问答
  • 循环执行次数计算
    千次阅读
    2019-08-10 18:36:39
    package test;
    
    public class Fortest {
    
    	public static void main(String[] args) {
    	    int x=0;
    	    int n=3;
    		
    		for (int i=1;i<=n;i++){
    			for(int j=1;j<=i;j++){
    				for(int k=1;k<=j;k++){
    					x++;
    					System.out.println(x);
    				}
    			}
    		  } 		
    	}
    
    }

    我们来看以上程序,如果只计算时间复杂度,可以看出来,预估时间复杂度为n^3

    不过要计算x的值,即循环次数。就会稍微麻烦。很容易绕晕。

    一般性公式:(n(n+1)(n+2)(n+4)...)/(1*2*3*4...)

    更多相关内容
  • 三层循环执行次数计算过程

    千次阅读 2019-10-05 12:19:41
    algs里分析ThreeSum算法的执行时间时用到了三层循环执行次数,文章里只给了结论没有计算过程。不知道原理,只知道结果,不符合我的学习习惯,所以我用自己的方法尝试计算。下面是示例代码: for (int i = 0; i <...

    algs里分析ThreeSum算法的执行时间时用到了三层循环的执行次数,文章里只给了结论没有计算过程。不知道原理,只知道结果,不符合我的学习习惯,所以我用自己的方法尝试计算。下面是示例代码:

    for (int i = 0; i < N; ++i) {
    	for (int j = i + 1; j < N; ++j) {
    		for (int k = j + 1 ; k < N; ++k) {
    			// do something
    		}
    	}
    } 
    

    显而易见,最外层的循环的执行次数是 N N N次,第二层循环次数是个等差数列: N − 1 , N − 2 , N − 3 , . . . , 3 , 2 , 1 , 0 N-1, N-2, N-3, ..., 3, 2, 1, 0 N1,N2,N3,...,3,2,1,0,所以第二层循环的执行次数是 N ( N − 1 ) 2 \frac{N(N-1)}{2} 2N(N1)。第三层循环次数就不是那么直观了,可以先把i和j的值带入具体的值来分别计算第三层的循环次数,然后再分析下规律。

    i = 0 , j ∈ [ 1 , N − 1 ] i=0, j\in[1, N-1] i=0,j[1,N1]

    ij第三层的循环次数
    01N-2
    02N-3
    03N-4
    0N-32
    0N-21
    0N-10

    i = 1 , j ∈ [ 2 , N − 1 ] i=1, j\in[2, N-1] i=1,j[2,N1]

    ij第三层的循环次数
    12N-3
    13N-4
    14N-5
    1N-32
    1N-21
    1N-10

    i = 2 , j ∈ [ 3 , N − 1 ] i=2, j\in[3, N-1] i=2,j[3,N1]

    ij第三层的循环次数
    23N-4
    24N-5
    25N-6
    2N-32
    2N-21
    2N-10

    i = N − 4 , j ∈ [ N − 3 , N − 1 ] i=N-4, j\in[N-3, N-1] i=N4,j[N3,N1]

    ij第三层的循环次数
    N-4N-32
    N-4N-21
    N-4N-10

    i = N − 3 , j ∈ [ N − 2 , N − 1 ] i=N-3, j\in[N-2, N-1] i=N3,j[N2,N1]

    ij第三层的循环次数
    N-3N-21
    N-3N-10

    i = N − 2 , j ∈ [ N − 1 , N − 1 ] i=N-2, j\in[N-1, N-1] i=N2,j[N1,N1]

    ij第三层的循环次数
    N-2N-10

    可以得出第三层循环的循环次数是与i相关的等差数列。

    i第三层的循环次数等差数列第三层循环的循环次数和
    0N-2, N-3, N-4, N-5, N-6, N-7, …, 2, 1, 0 ( N − 2 ) ( N − 1 ) 2 \frac{(N-2)(N-1)}{2} 2(N2)(N1)
    1N-3, N-4, N-5, N-6, N-7, …, 2, 1, 0 ( N − 3 ) ( N − 2 ) 2 \frac{(N-3)(N-2)}{2} 2(N3)(N2)
    2N-4, N-5, N-6, N-7, …, 2, 1, 0 ( N − 4 ) ( N − 3 ) 2 \frac{(N-4)(N-3)}{2} 2(N4)(N3)
    N-42, 1, 03
    N-31, 01
    N-200

    由等差数列求和公式 f ( n ) = n 2 + n 2 f(n)=\frac{n^2+n}{2} f(n)=2n2+n可得第三层循环的循环次数和 s u m ( i ) = ( N − 2 − i ) 2 + ( N − 2 − i ) 2 , i ∈ [ 0 , N − 2 ] sum(i)=\frac{(N-2-i)^2+(N-2-i)}{2},i\in[0, N-2] sum(i)=2(N2i)2+(N2i),i[0,N2],于是第三层循环的循环次数总和 ∑ i = 0 N − 2 s u m ( i ) \displaystyle \sum ^{N-2}_{i=0}sum(i) i=0N2sum(i)
    = ∑ i = 0 N − 2 ( N − 2 − i ) 2 + ( N − 2 − i ) 2 =\displaystyle \sum ^{N-2}_{i=0}\frac{(N-2-i)^2+(N-2-i)}{2} =i=0N22(N2i)2+(N2i)
    = ( N − 2 ) 2 + ( N − 2 ) 2 + ( N − 3 ) 2 + ( N − 3 ) 2 + ( N − 4 ) 2 + ( N − 4 ) 2 + . . . + ( 2 ) 2 + ( 2 ) 2 + ( 1 ) 2 + ( 1 ) 2 + ( 0 ) 2 + ( 0 ) 2 =\frac{(N-2)^2+(N-2)}{2}+\frac{(N-3)^2+(N-3)}{2}+\frac{(N-4)^2+(N-4)}{2}+...+\frac{(2)^2+(2)}{2}+\frac{(1)^2+(1)}{2}+\frac{(0)^2+(0)}{2} =2(N2)2+(N2)+2(N3)2+(N3)+2(N4)2+(N4)+...+2(2)2+(2)+2(1)2+(1)+2(0)2+(0)
    = ( N − 2 ) 2 + ( N − 3 ) 2 + ( N − 4 ) 2 + . . . + ( 2 ) 2 + ( 1 ) 2 + ( 0 ) 2 + ( N − 2 ) + ( N − 3 ) + ( N − 4 ) + . . . + 2 + 1 + 0 2 =\frac{(N-2)^2+(N-3)^2+(N-4)^2+...+(2)^2+(1)^2+(0)^2+(N-2)+(N-3)+(N-4)+...+2+1+0}{2} =2(N2)2+(N3)2+(N4)2+...+(2)2+(1)2+(0)2+(N2)+(N3)+(N4)+...+2+1+0

    平方和公式 ∑ k = 1 n k 2 = n ( n + 1 ) ( 2 n + 1 ) 6 \displaystyle \sum ^{n}_{k=1}k^2=\frac{n(n+1)(2n+1)}{6} k=1nk2=6n(n+1)(2n+1)和等差数列求和公式 f ( n ) = n 2 + n 2 f(n)=\frac{n^2+n}{2} f(n)=2n2+n,所以
    ( N − 2 ) 2 + ( N − 3 ) 2 + ( N − 4 ) 2 + . . . + ( 2 ) 2 + ( 1 ) 2 + ( 0 ) 2 + ( N − 2 ) + ( N − 3 ) + ( N − 4 ) + . . . + 2 + 1 + 0 2 \frac{(N-2)^2+(N-3)^2+(N-4)^2+...+(2)^2+(1)^2+(0)^2+(N-2)+(N-3)+(N-4)+...+2+1+0}{2} 2(N2)2+(N3)2+(N4)2+...+(2)2+(1)2+(0)2+(N2)+(N3)+(N4)+...+2+1+0
    = ( N − 2 ) ( N − 2 + 1 ) ( 2 ( N − 2 ) + 1 ) 6 + ( N − 2 ) 2 + ( N − 2 ) 2 2 =\frac{\frac{(N-2)(N-2+1)(2(N-2)+1)}{6}+\frac{(N-2)^2+(N-2)}{2}}{2} =26(N2)(N2+1)(2(N2)+1)+2(N2)2+(N2)
    为了方便计算,代入N-2=a
    ( N − 2 ) ( N − 2 + 1 ) ( 2 ( N − 2 ) + 1 ) 6 + ( N − 2 ) 2 + ( N − 2 ) 2 2 \frac{\frac{(N-2)(N-2+1)(2(N-2)+1)}{6}+\frac{(N-2)^2+(N-2)}{2}}{2} 26(N2)(N2+1)(2(N2)+1)+2(N2)2+(N2)
    = a ( a + 1 ) ( 2 a + 1 ) 6 + a 2 + a 2 2 =\frac{\frac{a(a+1)(2a+1)}{6}+\frac{a^2+a}{2}}{2} =26a(a+1)(2a+1)+2a2+a
    = a ( a + 1 ) ( 2 a + 1 ) + 3 a ( a + 1 ) 6 2 =\frac{\frac{a(a+1)(2a+1)+3a(a+1)}{6}}{2} =26a(a+1)(2a+1)+3a(a+1)
    = ( a + 1 ) ( 2 a 2 + a + 3 a ) 6 2 =\frac{\frac{(a+1)(2a^2+a+3a)}{6}}{2} =26(a+1)(2a2+a+3a)
    = a ( a + 1 ) ( a + 2 ) 6 =\frac{a(a+1)(a+2)}{6} =6a(a+1)(a+2)
    再代入a=N-2
    = a ( a + 1 ) ( a + 2 ) 6 =\frac{a(a+1)(a+2)}{6} =6a(a+1)(a+2)
    = ( N − 2 ) ( N − 1 ) N 6 =\frac{(N-2)(N-1)N}{6} =6(N2)(N1)N
    所以
    第三层循环的循环次数总和 ∑ i = 0 N − 2 s u m ( i ) = ( N − 2 ) ( N − 1 ) N 6 \displaystyle \sum ^{N-2}_{i=0}sum(i)=\frac{(N-2)(N-1)N}{6} i=0N2sum(i)=6(N2)(N1)N

    展开全文
  • 多重for循环嵌套中语句的执行次数

    千次阅读 2019-08-11 20:13:23
    实例代码 for (int i = 0; i < n; i++) { for (int j = i + 1; j < n; j++) { for (int k = j + 1; k < n; k++) { ...以上代码中,求count++语句的执行次数。 其实这段代码中求count++...

    实例代码

    for (int i = 0; i < n; i++) {
        for (int j = i + 1; j < n; j++) {
           for (int k = j + 1; k < n; k++) {
                count++;
           }
        }
    }
    

    以上代码中,求count++语句的执行次数。

    其实这段代码中求count++语句的执行次数等价于:从n个整数中取出三个整数的组合总共有多少种(不考虑顺序,1,2,3 2,3,1 等算一种)。

    求解过程

    n &gt; 2 时 : n&gt;2时: n>2

          当 i = 0 时 , j = 1 ∼ ( n − 1 ) , c o u n t 的 执 行 次 数 为 ( ( n − 1 ) − 1 ) + ( n − 3 ) + ( n − 4 ) + ⋯ + 2 + 1 当i=0时,j=1\sim (n-1),count的执行次数为((n-1)-1)+(n-3)+(n-4)+\cdots+2+1 i=0j=1(n1)count((n1)1)+(n3)+(n4)++2+1

          当 i = 1 时 , j = 2 ∼ ( n − 1 ) , c o u n t 的 执 行 次 数 为 ( ( n − 1 ) − 2 ) + ( n − 4 ) + ( n − 5 ) ⋯ + 2 + 1 当i=1时,j=2\sim (n-1),count的执行次数为((n-1)-2)+(n-4)+(n-5)\cdots+2+1 i=1j=2(n1)count((n1)2)+(n4)+(n5)+2+1

          当 i = 2 时 , j = 3 ∼ ( n − 1 ) , c o u n t 的 执 行 次 数 为 ( ( n − 1 ) − 3 ) + ( n − 5 ) + ⋯ + 2 + 1 当i=2时,j=3\sim (n-1),count的执行次数为((n-1)-3)+(n-5)+\cdots+2+1 i=2j=3(n1)count((n1)3)+(n5)++2+1

                                              ⋮ \vdots

          当 i = n − 3 时 , j = ( n − 2 ) ∼ ( n − 1 ) , c o u n t 的 执 行 次 数 为 1 当i=n-3时,j=(n-2)\sim (n-1),count的执行次数为1 i=n3j=(n2)(n1)count1

          当 i = n − 2 时 , j = ( n − 1 ) , c o u n t 的 执 行 次 数 为 0 当i=n-2时,j=(n-1),count的执行次数为0 i=n2j=(n1)count0

    可以看出,每次i产生变化时,count++语句的执行次数都是一个等差数列,可由等差数列求和公式:
    S n = n ( a 1 + a n ) 2 = 1 + 2 + ⋯ + n = n ( 1 + n ) 2 = n 2 + n 2 S_n=\frac{n(a_1+a_n)}{2}=1+2+\cdots+n=\frac{n(1+n)}{2}=\frac{n^2+n}{2} Sn=2n(a1+an)=1+2++n=2n(1+n)=2n2+n
    count++总执行次数 S n : S_n: Sn:
    S n = ( n − 2 ) 2 + ( n − 2 ) 2 + ( n − 3 ) 2 + ( n − 3 ) 2 + ⋯ + 2 2 + 2 2 + 1 2 + 1 2 = ( ( n − 2 ) 2 + ( n − 3 ) 2 + ⋯ + 2 2 + 1 2 ) + ( ( n − 2 ) + ( n − 3 ) + ⋯ + 2 + 1 ) 2 S_n=\frac{(n-2)^2+(n-2)}{2}+\frac{(n-3)^2+(n-3)}{2}+\cdots+\frac{2^2+2}{2}+\frac{1^2+1}{2}\\ =\frac{((n-2)^2+(n-3)^2+\cdots+2^2+1^2)+((n-2)+(n-3)+\cdots+2+1)}{2} Sn=2(n2)2+(n2)+2(n3)2+(n3)++222+2+212+1=2((n2)2+(n3)2++22+12)+((n2)+(n3)++2+1)
    再由公式:
    1 2 + 2 2 + ⋯ + n 2 = n ( n + 1 ) ( 2 n + 1 ) 6 1^2+2^2+\cdots+n^2=\frac{n(n+1)(2n+1)}{6} 12+22++n2=6n(n+1)(2n+1)
    得:
    S n = ( n − 2 ) ( n − 2 + 1 ) ( 2 ( n − 2 ) + 1 ) 6 + ( n − 2 ) 2 + ( n − 2 ) 2 2 = n ( n − 1 ) ( n − 2 ) 6 S_n=\frac{\frac{(n-2)(n-2+1)(2(n-2)+1)}{6}+\frac{(n-2)^2+(n-2)}{2}}{2}\\ =\frac{n(n-1)(n-2)}{6} Sn=26(n2)(n2+1)(2(n2)+1)+2(n2)2+(n2)=6n(n1)(n2)
    0 &lt; n &lt; 2 时 : 0&lt;n&lt;2时: 0<n<2

    count++的执行次数为0, n &gt; 2 n&gt;2 n>2的公式仍适用于 0 &lt; n &lt; 2 0&lt;n&lt;2 0<n<2的情况。

    即:

    count++语句的执行次数为 n ( n − 1 ) ( n − 2 ) 6 \frac{n(n-1)(n-2)}{6} 6n(n1)(n2)

    参考文章

    一个小问题:计算3层循环的执行次数

    展开全文
  • 特殊for循环嵌套执行次数

    千次阅读 2020-06-12 16:16:02
    for(i=1;i<=n;i*=2) for(j=1;j<=i;j++) laugh++; 请解释一下这里laugh++执行了多少次?...设循环k次,则有 (<...所以,总循环次数为 Sn = 2*(1-)/(1 - 2) + 1 =- 1, 代入k值有:(<=n 且是2的倍数) ...

    for(i = 1; i<=n; i*=2)
      for(j=1; j<=i; j++)
           laugh++;
    请解释一下这里laugh++执行了多少次?

    设循环k次,则有 {n}' = 2^{^{k-1}} \rightarrow k = log_{2}{n}'+1({n}'<=n 且 {n}'是2的倍数)

    内层for循环上限i的取值为1 2 4 8 .... 2^{^{k-1}},是一个等比数列;

    所以,总循环次数为  Sn = 2* (1-2^{^{k-1}})/(1 - 2) + 1 = 2^{k} - 1, 代入k值有: 2^{\log_{2}{n}'+1}-1 ({n}'<=n 且 {n}'是2的倍数)

    当n=11时,{n}'=8,代入得到次数为15;

    展开全文
  • 如果循环遍历list / tuple / sequence,则可以使用len(…)来推断循环执行次数.但是当循环遍历迭代器时,你不能.[为清晰起见更新:我正在考虑一次性使用有限迭代器,我想对项目进行计算并同时计算它们.]我目前使用显式...
  • 示例代码展示 1.for(i=1;i<=n;i++){ //n+1次 - for(j=1;j<=n;j++){ //n(n+1)次 - c[i][j]=0; //n*n次 - for(k=0;... - c[i][[j]=c[i][[j]+a[i][j]*b[k][j];...我们把
  • m=0 for(i=1;i<=N;i++) for(j=1;j<=i;...知道了第n次循环m的执行次数,再全部加起来就能知道总的次数,也就是求数列的前n项和: 又因为; 所以数列an前n-1项和 . 把(n-1)换成n,也就是数列前n项和;
  • 循环执行次数 n(n+1)/2

    千次阅读 2018-01-16 20:23:09
    int main(void) { int n = 3; int i, j; for ( i = 0; i ; i++) for (j = i; j ; j++) printf("i=%d,j=%d\n",i,j); system("pause"); return 0; } /* i=0,j=0 i=0,j=1 i=0,j=2 i=1,j=1 ...i=2
  • java学习日记,循环次数的确定

    千次阅读 2021-02-27 11:01:41
    这种方法是通过控制循环执行条件和起始值来控制循环次数。这是最基础的方法,也是最简单,最常用的方法。例如:for(i=0;i<100;i++){System.out.print(i);}这段代码的循环次数是100次,因为循环起始值是0,循环...
  • 利用range函数控制for循环执行次数

    千次阅读 2021-03-19 15:26:23
    (至于range函数获取的数值是从0开始到n-1结束这一点,完全不用考虑,因为range函数获取的数值是多少是毫无用处的,在这里它的用处仅仅是控制循环执行次数而已。) 所以在执行power(2,3)时,result*=x这行代码只会...
  • 下面的Python循环体的执行次数与其他不同的是()答:i=0 while(i<=10): print(i) i=i+1懒扎衣动作主要包括掤、肩靠、肘击;穿掌、护身掌、铲脚技法。(?)答:对液体的液封高度的确定是根据答:静力学方程;《御药...
  • For循环次数计算公式

    万次阅读 2006-07-07 20:33:00
    N=INT((终值-初值)/步长)+1 
  • 05.Python循环

    千次阅读 2021-04-26 20:36:27
    程序的三大流程在程序开发中,一共有三种流程方式:顺序 —— 从上向下,顺序执行代码分支 —— 根据条件判断,决定执行代码的 分支循环 —— 让 特定代码 重复 执行image02. while 循环基本使用循环的作用就是让 ...
  • 区别:1、运用场景不同:晓得执行次数的时分普通用for,条件循环时普通用while。2、两种循环在结构死循环时的区别:while循环里的条件被看成表达式,因而,当用while结构死循环时,里面的TRUE实践上被看成永远为真的...
  • c语言for循环如何使用

    千次阅读 2021-05-19 12:05:37
    c语言for循环for语句是循环控制结构中使用最广泛的一种循环控制语句,特别适合已知循环次数的情况。一般形式如下:for ( [表达式 1]; [表达式 2 ]; [表达式3] )语句其中:表达式1:一般为赋值表达式,给控...
  • python的运算符和while循环

    千次阅读 2021-01-30 02:18:11
    算术运算:a=10,b=20赋值运算:比较运算:逻辑运算:二、While 循环为什么要用while循环呢?打个比方来说吧,就像猜数字的游戏,要想让用户猜,就得一次次的猜吧,不能猜一次就程序已经结束了,这样是不是感...
  • 递归方法。计算递归次数

    千次阅读 2019-10-14 14:02:25
    计算递归次数 1.递归计算次数方法 import java.io.IOException; public class Digui extends Thread { public static void main(String[] args) { //创建一个本身方法。 Digui instance = new Digui(); byte...
  • 跟小白学Python数据分析——For循环

    千次阅读 2021-01-14 01:30:33
    循环是指反复地连续做某件事,例如地球绕地轴自转一圈就是一天,自转的同时绕太阳公转一圈就是一年。周而复始,转了一圈又一圈,一次又一次地循环。在编程过程中,经常会出现要重复编写的代码,例如介绍记录合并操作...
  • 学习python小结:关于循环循环计算

    千次阅读 2021-08-27 19:37:45
    循环的作用就是让指定的代码重复的执行 2.语法 (开始要设置初始条件,通常为重复执行的命令 eg:i = 1 这个就是计数器) while 条件判断 (即计数器是否达到目标次数 eg: i <= 5) 条件满足时做的事1 条件...
  • 2021-03-30 bat 脚本计录循环次数

    千次阅读 2021-03-30 15:27:42
    bat 脚本计录循环次数 一、bat 测试脚本如下: @echo off set num=0 :loop set /a num+=1 echo loop number= %num% if %num% == 20 goto end goto loop :end echo all done! 二、运行结果 ...
  • 如何正确计算“每秒次数”?

    千次阅读 2021-03-17 14:45:40
    然后,在一个循环中,我们打印我们想要测试的消息,并在每次迭代检查是否超过结束时间之间,计算我们进行测试的次数。 最后,我们打印消息的平均每秒打印次数。这有助于解释这样一个事实,即我们可能会在纪元后的...
  • C# 一秒之内执行简单for循环次数

    千次阅读 2019-07-16 22:09:00
    本人闲着无聊,想看一下本人电脑C#执行for循环一秒间能执行多少次i++操作。 电脑信息: 8核8G i5-8300H 电脑信息 Code: static void Main(string[] args) { Stopwatch watch = new Stopwatch(); ...
  • 冒泡排序 冒泡排序(Bubble Sort),是一种较简单的排序算法。 冒泡排序算法的原理如下: 比较相邻的元素。如果第一个比第二个大,就...循环次数优化:当冒泡排序进行外层循环时,内层循环中交换值语句不会再执.
  • 代码执行顺序之循环执行 循环执行的分类 for循环 while循环 dowhile循环 for循环 语法: for(循环初始化表达式;循环条件表达式;循环后的操作表达式){ ​ // 循环体 } 执行步骤分析: 循环初始化表达式最先...
  • python-----运算符及while循环

    千次阅读 2020-12-03 05:55:57
    算术运算:a=10,b=20赋值运算:比较运算:逻辑运算:二、While 循环为什么要用while循环呢?打个比方来说吧,就像猜数字的游戏,要想让用户猜,就得一次次的猜吧,不能猜一次就程序已经结束了,这样是不是感...
  • Python for循环

    千次阅读 2020-11-26 06:57:50
    除了 while 循环,还有一种更具有可读性的循环结构,这就是 for 循环,它可以将同一段代码重复执行一定的次数。for 循环使得编写一个循环更为简单:只需要创建一个变量,当条件为真时一直循环,并且在每轮循环的末尾...
  • shell统计循环次数的方法

    万次阅读 2020-10-23 18:40:05
    前提,我今天在linux上尝试用for循环统计出满足条件的循环次数,但是我发现shell不能像其他语言一样 可以用 +1,这可难哉了,网上搜索了很多关于统计shell循环次数的方法,竟然搜不到! 完全搜不到!!!! 所以我就...
  • 满意答案eh447567推荐于 2017.12.15采纳率:55%等级:13已帮助:7691人您好,break,continue,goto ,return等控制语句会改变循环执行次数。int i,j,k;for (i=0;i<100;i++) //循环的控制代码{......//外循环的...
  • 【C语言】循环题目详解

    千次阅读 2021-05-20 01:49:08
    老九学堂传送门C语言有3种循环:for、while、do while;接下来,老九君带着大家来详细的解析一下关于循环的题目,让你更加清楚和熟练的掌握循环。三大循环1.whlie循环:/* while----注意花括号的使用 *//* 糟糕的...
  • While循环计数

    千次阅读 2020-12-03 21:35:08
    使用VS2015Python 3.4这个while计数器有一些问题。它正在慢慢地把我逼疯了,因为我确信它“应该”工作,但没有更新计数器。我已经运行了步进调试,可以看到计数器在while条件行之前重置为3。至少我很讨厌。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 216,888
精华内容 86,755
关键字:

循环执行次数计算