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,];

 

posted @ 2018-04-30 19:03  前端の战士  阅读(643)  评论(0编辑  收藏  举报