SORT()函数到底是怎样进行数字排序的

原创2016-11-05 14:32:15249
摘要:很多人会用sort(),并不见得知道它具体是怎样给数字排序的。其实不知道也行,会用就可以,感兴趣的可以来看看。  var numberArray = [2,4,1,3];   numberArray.sort(function(a,b){        ret

很多人会用sort(),并不见得知道它具体是怎样给数字排序的。其实不知道也行,会用就可以,感兴趣的可以来看看。

  var numberArray = [2,4,1,3];
  numberArray.sort(function(a,b){  
     return a-b; //从小到大4  })

用过sort()函数的都知道上面代码其实就是将数组里的元素从小到大排序,返回结果[1,2,3,4]。

为了弄清楚sort()是怎样进行数字比较和移动,最后排好序的,我加三行代码,让它把每一次比较的结果,以及a和b的值都显示在控制台上。

var numberArray = [2,4,1,3];

res=numberArray.sort(function(a,b){  
   console.log(numberArray);
   console.log(a); 
   console.log(b);
   return a-b; 
   
})
console.log(res);

控制台显示内容:

1.png

红色字体是我标记的,以便理解。

咱们看一下,一开始数组是[2,4,1,3],从小到大排序是从左边开始两两比较,首先2和4比较,2<4,俩数字位置不变;继续向右走,4和1比较,4>1,将4放在原来1的位置上;那么一开始比4小的2与1的大小关系呢,这会儿再进行比较,2>1,那就1在前,2在后;以此类推。这种排序方法叫做冒泡排序。

函数内部咱们也可以写出来:

function bubbleSort(arr) {
    var i = arr.length, j;
    var tempExchangVal;
    while (i > 0) {
        for (j = 0; j < i - 1; j++) {
            if (arr[j] > arr[j + 1]) {
                tempExchangVal = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = tempExchangVal;
            }
        }
        i--;
    }
    return arr;
}

如果是sort()函数从大到小排序,则是从左向右两两进行比较,大的放在左边。下面来看一下代码和控制台显示:

var numberArray = [2,4,1,3];

res=numberArray.sort(function(a,b){  
   console.log(numberArray);
   console.log(a); 
   console.log(b);
   return b-a; //从大到小
   
})
console.log(res);

1.png

发布手记

热门词条