我也是小白,可能存在錯誤,各位倘若看到一定要帶着思考來看...
下面的分析一大堆,結論就這個:
看到<,推斷出次數是 (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是計算結果