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