外重循环搞懂了,内重循环没搞懂
来源:4-1 冒泡排序
慕沐7480834
2022-11-14 12:47:27

为什么这儿内重循环次数还得减去一个i呢,不减去这个i,会有啥影响吗?
1回答
好帮手慕小小
2022-11-14
同学你好,外层循环控制比较的趟数,里层循环控制的是每趟比较的次数。每一趟比较结束后都会“冒”出来一个数,“冒”出来的数就不需要再进行比较了,故内层循环需要减去i,若不减去 i 则每趟都要比较 length-1次,会降低程序运行效率。


同学也可使用如下代码进行测试运行,观察程序运行结果:
public static void main(String[] args) {
int[] a = {1, 65, 84, 36, 28, 16, 34, 80, 8};
int temp;
int count = 0;//记录比较的次数
for (int i = 0; i < a.length - 1; i++) {
// for (int j = 0; j < a.length - 1; j++) {
for (int j = 0; j < a.length -i- 1; j++) {
count++;
if (a[j] > a[j + 1]) {
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
System.out.println(count);//一共比较的次数
System.out.println(Arrays.toString(a));
}祝学习愉快~
相似问题