精华内容
下载资源
问答
  • 三层循环执行次数计算过程

    千次阅读 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循环次数计算公式

    千次阅读 2006-07-07 20:33:00
    N=INT((终值-初值)/步长)+1 
    N=INT((终值-初值)/步长)+1 
    展开全文
  • 示例代码展示 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];...我们把

    示例代码展示

    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)。

    展开全文
  • n层嵌套for循环执行次数

    千次阅读 2019-08-10 18:36:39
    package test; public class Fortest { public static void main(String[] args) { ...不过要计算x的值,即循环次数。就会稍微麻烦。很容易绕晕。 一般性公式:(n(n+1)(n+2)(n+4)...)/(1*2*3*4...)
    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...)

    展开全文
  • 特殊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循环嵌套中语句的执行次数

    千次阅读 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++...
  • 文章目录一、前言二、foreach的执行过程1、关于版本不同的foreach变化2、关于引用计数3、探寻foreach的运行过程三、foreach中执行unset()的问题1、当我们是为了...博主在最近操作数组的时候,在foreach循环执行了u...
  • 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,对循环次数循环结束后变量...
  • # python万能装饰器实现计算函数的调用次数执行时间 import time def set_fun(func): num = 0 # 初始化次数 def call_fun(*args, **kwargs): nonlocal num # 声明num 变当前作用域局部变量为最临近外层(非...
  • 1,线程组迭代次数 2,循环控制器 3,生成聚合报告 总结:对子请求设置循环控制器,则仅对该部分请求起作用,线程组的迭代次数对其不影响。 ...
  • Shell 循环执行3次命令

    千次阅读 2017-11-22 15:51:00
    如cat test.txt |wc -l 计算文档行数。 $变量前面表示符号。还有一个妙用即和!结合起来使用。!$ 表示上一条命令中最后一个变量 如:上一次touch 1.txt 。Vi !$ 其中!$表示为1.txt、 ~表示root家目录。 &...
  • //计算 //单片机每秒执行的指令数:频率*1 (例:cc2530频率为)32MHz //8051效率是PC的12分之一 //循环需要执行5条指令 //公式为 32*1024*1024/5/12 = 559240.533 ...所以写一个for循环 循环次数为559240次
  • shell统计循环次数的方法

    千次阅读 2020-10-23 18:40:05
    前提,我今天在linux上尝试用for循环统计出满足条件的循环次数,但是我发现shell不能像其他语言一样 可以用 +1,这可难哉了,网上搜索了很多关于统计shell循环次数的方法,竟然搜不到! 完全搜不到!!!! 所以我就...
  • for循环三层嵌套 时间复杂度计算

    万次阅读 多人点赞 2016-11-20 19:52:16
    假设有这样一个for循环 for(i=1;i<=n;i++) for(j=1;j<=i;j++) for(k=1;k<=j;k++) x++; 现在要求它的时间复杂度,看起来有点麻烦,但是只要我们把问题分解成若干个小问题一一解决,那么就容易多了...
  • 如下代码段 for ( int i=0;i;i++) for ( int j=i+1;j;j++) for ( int k=j+1;k;k++) if(xxxxxx) 为什么这段算法的执行次数为 N(N-1)(N-2)/6 啊?这个/6是怎么算出来的呢?
  • 第五课 for循环(1)--循环次数控制

    万次阅读 2015-09-30 00:42:40
    第五课 for循环(1)---循环次数控制 【循环引入】   例题5.1:画下面形状的5级梯形。   分析: 研究问题的方法之一是“从简单到复杂”。 步骤 说明 图形 步骤1 先分析简单的1级梯形基本...
  • 在Python的for循环里,循环遍历可以写成: for item in list: print item 它可以遍历列表中的所有元素,但是有什么方法可以知道到目前为止我循环了多少次? 想到的替代方案是: count=0 for item in list: ...
  • m=0 for(i=1;i<=N;i++) for(j=1;j<=i;...知道了第n次循环m的执行次数,再全部加起来就能知道总的次数,也就是求数列的前n项和: 又因为; 所以数列an前n-1项和 . 把(n-1)换成n,也就是数列前n项和;
  • 关于jmeter线程组和循环次数的设置2

    千次阅读 2018-12-04 10:21:06
    关于jmeter线程组和循环次数的设置 引自:http://www.cnblogs.com/turbolxq/p/9808054.html   初始设置:设置线程数 n = 80,循环次数a = 1,ramp-up period=5 一 计算最后一个线程的生成时间(last)  ...
  • 关于jmeter线程组和循环次数的设置

    千次阅读 2018-10-18 00:27:00
    初始设置:设置线程数n= 80,循环次数a= 1,ramp-up period=5 一 计算最后一个线程的生成时间(last)  总共生成80个线程,总共需要5秒,每秒钟会启动16个线程,所以,第5个线程开始启动的时间应该为第1个线程...
  • # 执行代码后算出来总是多3 ``` package work2; public class Part implements Runnable{ private int n = 800; private int i = 1; @Override public void run() { // TODO Auto-generated ...
  • 【求解思路】计算三层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; ...
  • 经常要用到倒计时、定时器,但总是搞不清楚,所以这里整理一下,方便后面使用 。...//一共3秒,每隔1秒执行一次 CountDownTimer timer = new CountDownTimer(3000, 1000) { @Override public void onTick(lon...
  • 重复执行——循环结构

    千次阅读 2019-12-02 22:57:02
    计算表达式的值,当表达式值为真时,执行一次循环体。也就是“当表达式成立时,不断重复执行循环体”,所以又称为“当型循环”。 2、do—while语句 此语句是C++中用于解决至少执行一次重复操作(循环体)的循环...
  • 遍历循环,按次数循环,遍历某个结构形成的循环运行方式 无限循环: randow库(产生随机数) 圆周率的计算: 遍历循环,按次数循环,遍历某个结构形成的循环运行方式 for &lt;循环变量&gt; in &lt;...
  • 场景需求: 某用户登录后查看自己的购物车,及时显示其购物车内的商品种类和合计金额。 原理: 自己创建jstl变量,存储自己需要统计的内容放到循环体里执行即可。
  • var a= 0 ; outermost: for ( ...当外层for循环开始时,i=0,时执行到内循环...这里我认为是内循环执行了50次,但看网上其他人说是外循环执行了50次,希望有高人能为我解惑。 ),然后是内循环5次,结果打印出55次。
  • (新手上路)疑问:for循环如何计算时间复杂度

    千次阅读 多人点赞 2018-03-08 12:06:42
    看到这样一段代码:for(int i=0;i&lt;n;i++){ for(int j=i;j&lt;n;i++){ //复杂度为O(1)的算法 ... } }这个算法的时间复杂度...观察内循环n+(n-1)+(n-2)+(n-3)+……+1=(n+1)+[(n-1)+2]+[(n-2)+3]+[(n-3)+4]...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 186,301
精华内容 74,520
关键字:

循环执行次数计算