大家都知道javascript的数组有sort排序方法,可以实现升序与降序,现在我们来学习一下sort方法排序的原理冒泡排序。
冒泡排序:拿数组的当前项和后一项比较,如果当前项大于后一项,两者交换位置。
let arr = [100, 34, 16, 3, 18, 70];
for (var i = 1; i < ary.length; i++) {
for (var j = 0; j < ary.length - i; j++) {
if (ary[j] > ary[j + 1]) {
[ary[j], ary[j + 1]] = [ary[j + 1], ary[j]]
}
}
}
第一层循环确定循环轮数,第二层循环当前项与后一项进行比较,如果当前项大于后一项就进行位置的互换,上面使用的是ES6的方法实现位置的互换。
//第一轮 i=1;
//j=0 arr[j]>arr[j+1] arr[0]>arr[1] 100>34 交换位置 [34,100,16,3,18,70];
//j=1 arr[j]>arr[j+1] arr[1]>arr[2] 100>16 交换位置 [34,16,100,3,18,70];
//j=2 arr[j]>arr[j+1] arr[2]>arr[3] 100>3 交换位置 [34,16,3,100,18,70];
//j=3 arr[j]>arr[j+1] arr[3]>arr[4] 100>18 交换位置 [34,16,3,18,100,70];
//j=4 arr[j]>arr[j+1] arr[4]>arr[5] 100>70 交换位置 [34,16,3,18,70,100,];
//j<5 arr.length-i
//第二轮 i=2; [34,16,3,18,70,100,];
//j=0 arr[j]>arr[j+1] arr[0]>arr[1] 34>16 交换位置 [16,34,3,18,70,100,];
//j=1 arr[j]>arr[j+1] arr[1]>arr[2] 34>3 交换位置 [16,3,34,18,70,100,];
//j=2 arr[j]>arr[j+1] arr[2]>arr[3] 34>18 交换位置 [16,3,18,34,70,100,];
//j=3 arr[j]>arr[j+1] arr[3]>arr[4] 34<70 不交换位置 [16,3,18,34,70,100,];
//j<4
//第三轮 i=3; [16,3,18,34,70,100,];
//j=0 arr[j]>arr[j+1] arr[0]>arr[1] 16>3 交换位置 [3,16,18,34,70,100,];
//j=1 arr[j]>arr[j+1] arr[1]>arr[2] 16<18 不交换位置 [3,16,18,34,70,100,];
//j=2 arr[j]>arr[j+1] arr[2]>arr[3] 18<34 不交换位置 [3,16,18,34,70,100,];