對於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是計算結果


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM