首页 > 编程语言 > 详细

sort()函数的排序原理

时间:2021-06-09 18:11:00      阅读:17      评论:0      收藏:0      [点我收藏+]

首先要理解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]
 

sort()函数的排序原理

原文:https://www.cnblogs.com/yukui-mamba/p/14866336.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!