什么是冒泡排序呢?
就是将数组的前一项元素与后一项元素进行比较,将大的一项往后移动一位,通过循环比较相邻的两位大小,不断将大的后移,实现数组元素的大小排序。
JS代码如下:
代码详解:
当 i=0 , j=0, arr[j]=4 ,arr[j+1]=1 , 此时 arr[j]>arr[j+1],大的往后移,arr=[1,4,7,2]; j=1, arr[j]=4 ,arr[j+1]=7 , 此时 arr[j]<arr[j+1],数组不变arr=[1,4,7,2], 继续执行j++, j=2, arr[j]=7 ,arr[j+1]=2,此时 arr[j]>arr[j+1], 大的往后移,arr=[1,4,2,7];j=3,由于j<len-i,即j<3,结束此次循环,执行i++
当 i=1,j<len-i,即j<2, j=0时,arr=[1,4,2,7], j=1,arr[j]=4 ,arr[j+1]=2,此时 arr[j]>arr[j+1], 大的往后移,arr=[1,2,4,7], j=2,跳出,执行i++
当i=2时,j<len-i,即j<1, j=0时,arr=[1,2,4,7],j++,结束循环,然后跳出
从上面可以看出,我们只循环了3轮,没轮就只比较数组长度arr.length-1次,然后在第一轮比较时,就比较出了最大值,所以最后一个就不比较,所以j<len-i, 循环比较几轮的i=length-1,所以开始就设置了var len=arr.length-1;