排序

js快速排序

 
let a = [{ b: 9 }, { b: 2 }, { b: 10, c: 'ddd' }, { b: 66 }, { b: 33 }];
    console.log(this.sortArry(a));

sortArry(arr) {
    var self = this;
    if (arr.length <= 1) {
      return arr;
    }
    let midIndex = Math.floor(arr.length / 2);
    let midarr = arr.splice(midIndex, 1)[0];//取中间值
    let left = [], right = [];
    for (let i = 0; i < arr.length; i++) {
      if (arr[i].b < midarr.b) {
        left.push(arr[i]);
      } else {
        right.push(arr[i]);
      }
    }
    return self.sortArry(left).concat(midarr, self.sortArry(right));//递归调用连接数组
  }

递归前要条件判断退出调用。

 

利用数组的sort方法进行排序。a-b是升序b-a是降序;

function sortarr(a,b){
  return a.b-b.b  
}

var newArr=a.sort(sortarr);

要反过来就调用下reveser()
newArr.reveser();

 

arr.sort(function(a,b){

if(a>b){return 1;

}else{

return -1;}

})

sort的规则:返回值为正数时两个数交换位置,为0时不变

所以return a-b为正常升序,

返回b-a为降序。

posted on 2021-05-02 13:53  未燃  阅读(41)  评论(0)    收藏  举报