yukui-mamba

首先要理解sort()内部是利用递归进行冒泡排序的

例如:

var arr = [3, 8, 5, 1];

sort()方法的比较逻辑为:
第一轮:3和8比,3和5比,3和1比
第二轮:8和5比,8和1比
第三轮:5和1比

其次,sort()方法会接受一个比较函数compare(a, b),该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。

最后,永远要记住一句话,凡是返回大于0的正数的时候就要交换位置。(内部实现)

例如:

var arr =[3, 8, 5, 1];

现在要进行升序排列,从左到右的数组项关系最终应该为: a < b < c < d
所以只要在当a大于b的时候去交换它们的位置就好了:

if(a > b ) {
    return 1;
}

简化后:

// 升序
return a - b;
// 倒序
return b - a;

 

 

另外需要注意的是sort()方法比较的是字符串,没有按照数值的大小对数字进行排序,要实现这一点,就必须使用上面所提到的排序函数

 

function compare(a,b){
  return a - b  
}

arr =[3, 8, 5, 1];   console.log(arr.sort());   // [3,8,5,1]
console.log(arr.sort(compare)); //[1,3,5,8]
 

分类:

技术点:

相关文章:

  • 2021-11-19
  • 2021-11-19
  • 2022-01-09
  • 2021-06-08
  • 2022-12-23
  • 2021-11-19
  • 2021-09-05
猜你喜欢
  • 2021-11-19
  • 2021-11-19
  • 2021-11-19
  • 2021-11-30
  • 2021-09-13
相关资源
相似解决方案