正在回答
同学你好,外层循环控制的是趟数,也就是比较多少趟。内层循环控制的次数,也就是数组中的数字两两比较,一共需要比较多少次。
以数组[6, 2, 9, 3, 8, 1]为例:
第一趟比较过程
内层循环负责两两比较,j的初始值为数组的长度-1,也就是5,内层每循环一次,j的值就会-1
第一次执行内层循环:j=5;i=1 arr[j]与arr[j-1]比较,也就是1和8比较,1比8小,1和8交换位置,交换位置之后,数组为[6, 2, 9, 3, 1, 8]
第二次执行内层循环:j=4;i=1 arr[j]与arr[j-1]比较,也就是1和3比较,1比3小,1和3交换位置,交换位置之后,数组为[6, 2, 9, 1, 3, 8]
第三次执行内层循环:j=3;i=1 arr[j]与arr[j-1]比较,也就是1和9比较,1比9小,1和9交换位置,交换位置之后,数组为[6, 2, 1, 9, 3, 8]
第四次执行内层循环:j=2;i=1 arr[j]与arr[j-1]比较,也就是1和2比较,1比2小,1和2交换位置,交换位置之后,数组为[6, 1, 2, 9, 3, 8]
第五次执行内层循环:j=1;i=1 arr[j]与arr[j-1]比较,也就是1和6比较,1比6小,1和6交换位置,交换位置之后,数组为[1, 6, 2, 9, 3, 8]
第六次执行内层循环:j=0;i=1 j >= i这个条件不成立了,内层循环结束,执行外层循环。
第二趟比较过程
经过外层循环,i=2,再次开始内层循环
第一次执行内层循环:j=5;i=2 arr[j]与arr[j-1]比较,也就是8和3比较,8比3大,8和3不交换位置,数组为[1, 6, 2, 9, 3, 8]
第二次执行内层循环:j=4;i=2 arr[j]与arr[j-1]比较,也就是3和9比较,3比9小,3和9交换位置,交换位置之后数组为[1, 6, 2, 3, 9, 8]
第三次执行内层循环:j=3;i=2 arr[j]与arr[j-1]比较,也就是3和2比较,3比2大,3和2不交换位置,数组为[1, 6, 2, 3, 9, 8]
第四次执行内层循环:j=2;i=2 arr[j]与arr[j-1]比较,也就是2和6比较,2比6小,2和6交换位置,数组为[1, 2, 6, 3, 9, 8]
第五次执行内层循环:j=1;i=2 j >= i这个条件不成立了,内层循环结束,执行外层循环。
第三趟比较过程
经过外层循环,i=3,再次开始内层循环
第一次执行内层循环:j=5;i=3 arr[j]与arr[j-1]比较,也就是8和9比较,8比9小,8和9交换位置,数组为[1, 2, 6, 3, 8, 9]
第二次执行内层循环:j=4;i=3 arr[j]与arr[j-1]比较,也就是8和3比较,8比3大,8和3不交换位置,数组为[1, 2, 6, 3, 8, 9]
第三次执行内层循环:j=3;i=3 arr[j]与arr[j-1]比较,也就是3和6比较,3比6小,3和6交换位置,数组为[1, 2, 3, 6, 8, 9]
第四次执行内层循环:j=2;i=3 j >= i这个条件不成立了,内层循环结束,执行外层循环。
第四趟比较过程
经过外层循环,i=4,再次开始内层循环
第一次执行内层循环:j=5;i=4,arr[j]与arr[j-1]比较,也就是9和8比较,9比8大,9和8不交换位置,数组为[1, 2, 3, 6, 8, 9]
第二次执行内层循环:j=4;i=4,arr[j]与arr[j-1]比较,也就是8和6比较,8比6大,8和6不交换位置,数组为[1, 2, 3, 6, 8, 9]
第三次执行内层循环:j=3;i=4 j >= i这个条件不成立了,内层循环结束,执行外层循环。
第五趟比较过程
经过外层循环,i=5,再次开始内层循环,
第一次执行内层循环:j=5;i=5,arr[j]与arr[j-1]比较,也就是9和8比较,9比8大,9和8不交换位置,数组为[1, 2, 3, 6, 8, 9]
第二次执行内层循环:j=4;i=5,j >= i这个条件不成立了,内层循环结束,执行外层循环。
经过外层循环,i=6,i < arr.length; 条件不成立,终止循环,
最终结果为[1, 2, 3, 6, 8, 9]
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星