zoukankan      html  css  js  c++  java
  • 对于for循环次数的一些探讨

    我也是小白,可能存在错误,各位倘若看到一定要带着思考来看...

    下面的分析一大堆,结论就这个:

    看到<,推断出次数是 (n-起始数) 次.
    <= 在这个基础上 加1次就好了

    1.for循环基本格式

    for循环的基本格式如下

            for (int i = 0; i < 5; i++) {
                
            }
    

    这里面有两个值得关注的点:

    起始数
    int i = 0;
    int i = 1;
    
    终止条件
    i < 5;
    i <= 5;
    

    2.for循环的探讨

    • 情况1:以0开始,小于n,则执行n次.
            for (int i = 0; i < 5; i++) {
                //执行次数为0,1,2,3,4
                //共 5 次
            }
    
    • 情况2:以1开始,小于n,则执行n-1次.
            for (int i = 1; i < 5; i++) {
                //执行次数为1,2,3,4
                //共 4 次
            }
    
    • 情况3:以0开始,小于等于n,在前面的基础上,多执了行1次.

    即0开始,<=n,执行了n+1次.

            for (int i = 0; i <= 5; i++) {
                //执行次数为0,1,2,3,4,5
                //共 6 次
            }
    
    • 情况3:以1开始,小于等于n,在前面的基础上,多执了行1次.

    即0开始,<=n,执行了(n-1)+1=n次.

            for (int i = 1; i <= 5; i++) {
                //执行次数为1,2,3,4,5
                //共 5 次
            }
    

    3.总结

    这个for循环执行了多少次

    如果是0开始
    < 对应 n次(n-0).
    <= 对应 n+1次.

    如果是1开始
    < 对应 n-1次.
    <= 对应 n次.

    怎么记忆:
    0开<是n(n-0)次,1开<是n-1次,条件换成<=则次数加1次
    

    看到<,我们就能推断出次数是 (n-起始数) 次.
    <= 在这个基础上 加1次就好了

    4.实例

    下方是一个冒泡排序

    N个数字要排序完成,总共进行N-1趟排序,第i趟的排序次数为N-i次.

            //外层控制排序次数
            for (int i = 1; i < intArr.length; i++) {
                //内层循环控制每一趟比较几次
                for (int j = 0; j < intArr.length - i; j++) {
                    if (intArr[j] > intArr[j + 1]) {
                        int temp = intArr[j];
                        intArr[j] = intArr[j + 1];
                        intArr[j + 1] = temp;
                    }
                }
            }
    

    外层执行了intArr.length-1次,里层执行了intArr.length-i-0次;
    即intArr.length-1次与intArr.length-i次;

    5.演示代码

    /**
     * @Class: MyForLoop
     * @Author: Yiang37
     * @Date: 2020/4/30 18:24
     * @Description: for循环次数探讨
     */
    public class MyForLoop {
        private static int flag = 1;
    
        public static void main(String[] args) {
    
            for (int i = 5639; i < 46659; i++) {
                System.out.println("次数:" + flag++);
            }
    
            System.out.println(46659 - 5639 + "是计算结果");
        }
    }
    

    结果如下

    ...
    次数:41013
    次数:41014
    次数:41015
    次数:41016
    次数:41017
    次数:41018
    次数:41019
    次数:41020
    41020是计算结果
    
  • 相关阅读:
    [转]Vetur can't find `tsconfig.json` or `jsconfig.json` in d:VueProjectsmyroute.
    疾病检验的概率的问题
    约束优化方法之拉格朗日乘子法与KKT条件
    GloVe与word2vec
    RNN、LSTM、GRU
    SVM 常见问题
    深度学习常用优化器算法Optimizer详解
    树模型-常见问题点
    leetcode 打家劫舍
    node 图片处理库 sharp
  • 原文地址:https://www.cnblogs.com/yang37/p/12810570.html
Copyright © 2011-2022 走看看