对于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是计算结果