外重循环搞懂了,内重循环没搞懂

来源:4-1 冒泡排序

慕沐7480834

2022-11-14 12:47:27

https://img.mukewang.com/climg/6371c7cd0943e49304050339.jpg

为什么这儿内重循环次数还得减去一个i呢,不减去这个i,会有啥影响吗? 

写回答

1回答

好帮手慕小小

2022-11-14

同学你好,外层循环控制比较的趟数,里层循环控制的是每趟比较的次数。每一趟比较结束后都会“冒”出来一个数,“冒”出来的数就不需要再进行比较了,故内层循环需要减去i,若不减去 i 则每趟都要比较 length-1次,会降低程序运行效率。

https://img.mukewang.com/climg/6371e48509a85dbc09290515.jpg

https://img.mukewang.com/climg/6371e4e009b5bbcc09110320.jpg

同学也可使用如下代码进行测试运行,观察程序运行结果:

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));
    }

祝学习愉快~

0

0 学习 · 9886 问题

查看课程

相似问题

回答 1

关于for循环

回答 1

回答 1