外重循环搞懂了,内重循环没搞懂
来源: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)); }
祝学习愉快~
相似问题