精华内容
下载资源
问答
  • n层嵌套for循环执行次数
    千次阅读
    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层循环的执行次数

    展开全文
  • 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;k<n;k++) //n*n*(n+1)次 - c[i][[j]=c[i][[j]+a[i][j]*b...

    示例代码展示

    1.for(i=1;i<=n;i++){										//n+1次
    2. 	for(j=1;j<=n;j++){									//n(n+1)次
    3. 		c[i][j]=0;											//n*n次
    4.		for(k=0;k<n;k++)								//n*n*(n+1)次
    5.			c[i][[j]=c[i][[j]+a[i][j]*b[k][j];			//n*n*n次
    6.	}
    7.}
    

    示例代码为两个n × n矩阵相乘的算法

    • 我们把算法所耗费的时间定义为该算法每条语句的频度之和
      T(n)=2n3 +3n2 2n+1

    算法的时间复杂度例题

    
     1. i=1;
     2. while(i<=n)
     3. 	i=i*2;
    
    

    在这里插入图片描述
    在这里插入图片描述

    1. 若循环执行一次:i=1*2=2,
    2. 若循环执行一次:i=2*2=22,
    3. 若循环执行一次:i=2*2=23,
    4. 若循环执行X次:i=2x
      设语句 i+i*2 执行次数为x次,
      由循环条件i<=n,所以2x <=n,所以 x<=log2 n

    2f(n) <=n,即f(n)<=log2 n,取最大值,f(n) = log2 n,
    所以该程序段的时间复杂度T(n)=O(log2 n)。

    展开全文
  • 跟小白学Python数据分析——For循环

    千次阅读 2021-01-14 01:30:33
    循环是指反复地连续做某件事,例如地球绕地轴自转一圈就是一天,自转的同时绕太阳公转一圈就是一年。周而复始,转了一圈又一圈,一次又一次地循环。...在Python中,循环语句有两个,一个是For循环,一...
  • 特殊for循环嵌套执行次数

    千次阅读 2020-06-12 16:16:02
    for(i=1;i<=n;i*=2) for(j=1;j<=i;j++) ...内层for循环上限i的取值为1 2 4 8 ....,是一个等比数列; 所以,总循环次数为 Sn = 2*(1-)/(1 - 2) + 1 =- 1, 代入k值有:(<=n 且是2的倍数) ...
  • 利用range函数控制for循环执行次数

    千次阅读 2021-03-19 15:26:23
    (至于range函数获取的数值是从0开始到n-1结束这一点,完全不用考虑,因为range函数获取的数值是多少是毫无用处的,在这里它的用处仅仅是控制循环执行次数而已。) 所以在执行power(2,3)时,result*=x这行代码只会...
  • MATLAB for循环

    万次阅读 2021-10-18 00:32:15
    MATLAB for循环 MATLAB中 for 循环是一个重复的控制结构,可以有效地写一个循环,只是执行次数是特定的。 MATLAB for 循环语法: MATLAB中的 for循环的语法如下: for index = values ... end for 循环...
  • var a=0; outermost: for(var i=0;i;i++){ for(var j=0;j;j++){ if(i==5&&j==5){ break outermost; } a++; } } alert(a)
  • 【Python】for 循环次数

    千次阅读 2021-08-15 15:13:35
    * for i in range(n): 循环n次 * for i in range(m, n): 循环n-m次
  • 2、For…Next 循环 如果重复操作的次数固定,使用 For…Next 循环是一个很好的选择,此外也将介绍语法很类似的 For Each…Next循环,它适用在数组或集合的重复循环,(一)For…Next 在 For…Next 循环的语法中使用...
  • c语言for循环如何使用

    千次阅读 2021-05-19 12:05:37
    c语言for循环for语句是循环控制结构中使用最广泛的一种循环控制语句,特别适合已知循环次数的情况。一般形式如下:for ( [表达式 1]; [表达式 2 ]; [表达式3] )语句其中:表达式1:一般为赋值表达式,给控...
  • for循环语句 重复执行语句,直到条件变为 false。 语法 for ( init-expression ; cond-expression ; loop-expression ) statement; 备注 使用 for 语句可构建必须执行指定次数的循环。 for 语句包括三个可选部分...
  • Lua 之 for 循环循环条件不会改变循环次数 for 循环中,循环的索引 i 为外部索引,修改循环语句中的内部索引 i,不会影响循环次数:
  • 【求解思路】计算三层for循环的时间复杂度

    千次阅读 多人点赞 2019-12-17 18:22:49
    求划线部分的执行次数for (int i = 1; i <= n; i++) { for (int j = 1; j <= i; j++) { for (int k = 1; k <= j; k++) { x=x+y; ...
  • view wx:for="{{dataArray}}" wx:key="index" wx:for-item="item" wx:if="{{index&lt;5}}"&gt;&lt;/view&gt;   mpvue、vue:v-if="index&lt;5...
  • Python for循环

    2020-11-26 06:57:50
    除了 while 循环,还有一种更具有可读性的循环结构,这就是...for循环在 Python 中,for 语句包含以下部分:for关键字;变量;in关键字;范围;冒号;从下一行开始,缩进的代码块。提示:for 循环用于循环代码一定次...
  • java For循环执行过程

    2020-09-14 10:47:01
    一,java for循环执行过程 先上代码,有一个循环100遍的代码。 for(int i=0;i<100;i++){ //i初始值,i<100循环条件,i++循环迭代次数 System.out.println("哈哈哈"+i+"次"); //循环体 } 首先拆开来看一下,...
  •  For循环按照设定好的次数N执行结构内的对象,包含两个长整型参数:总的循环次数N和当前循环次数I。建立For循环结构需要以下几个步骤。  · 第1步:放置For循环框。在子选板上单击鼠标左键或右键选择“For循环”...
  • 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(); ...
  • C语言 for循环次数

    千次阅读 2019-04-30 09:46:00
    C语言 for循环次数 for (i = 0;i < n;i++) 则循环次数是N,而循环结束以后,i的值是n。循环的控制变量i,是选择从0开始还是从1开始,是判断i<n  还是i <= n,对循环的次数,循环结束后变量...
  • •条件:循环执行的限制条件。如果为 TRUE,则循环继续。如果为 FALSE,则循环结束。 •增量:主要用于递增计数器(但可以是任何在循环的结束被执行的代码)。 注释:上面的初始值和增量参数可为空,或者有多个...
  • 循环执行次数 n(n+1)/2

    千次阅读 2018-01-16 20:23:09
    int main(void) { int n = 3;... 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=1,j=2 i=2
  • for循环执行代码块制定的次数。 foreach–根据数组中每个元素来循环代码块。 while循环 while语句循环执行代码块,直到指定的条件不成立。 while(条件) {  要循环执行的代码; } 案例: 设置一
  • LabVIEW的For循环

    2021-01-19 23:04:49
     For循环按照设定好的次数N执行结构内的对象,包含两个长整型参数:总的循环次数N和当前循环次数I。建立For循环结构需要以下几个步骤。  · 第1步:放置For循环框。在子选板上单击鼠标左键或右键选择“For循环”...
  • for循环

    千次阅读 2021-03-06 06:36:52
    除了while和do while循环,Java使用最广泛的是for循环for循环的功能非常强大,它使用计数器实现循环。for循环会先初始化计数器,然后,在每次循环前检测循环条件,在每次循环后更新计数器。计数器变量通常命名为i...
  • m=0 for(i=1;i<=N;i++) for(j=1;j<=i;...知道了第n次循环m的执行次数,再全部加起来就能知道总的次数,也就是求数列的前n项和: 又因为; 所以数列an前n-1项和 . 把(n-1)换成n,也就是数列前n项和;
  • python for循环次数避坑

    2021-02-08 21:06:31
    这段代码按理说应该成为死循环,可是并没有,for循环依旧只执行了5次。 第二段代码: array=[3,4,5] for i in range(len(array)): array.append(i) print(i) print(array) 结果: 0 1 2 [3, 4, 5,
  • for循环是一个循环控制结构,可以有效地编写需要执行的特定次数的循环。 语法 for循环在Go编程语言中的语法是: 代码如下: for [condition | ( init; condition; increment ) | Range] {  statement(s); } 下面...
  • 区别:1、运用场景不同:晓得执行次数的时分普通用for,条件循环时普通用while。2、两种循环在结构死循环时的区别:while循环里的条件被看成表达式,因而,当用while结构死循环时,里面的TRUE实践上被看成永远为真的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 250,984
精华内容 100,393
关键字:

for循环执行次数