js sort()排序原理是什么?是冒泡排序吗?
在sort的回调函数中打印或断点调试会进入多次,想知道sort()排序底层的一个原理
this.sortGoodsData.sort((goods1,goods2)=>{
// 根据传入的key获取对应的value
let v1=goods1[key],
v2=goods2[key];
// 对value进行对比
// boolean 类型的值
if(typeof v1==='boolean'){
if(v1){
return -1;
}
if(v2){
return 1;
}
return 0;
}
// float类型值的处理(价格,销量)
if(parseFloat(v1)>=parseFloat(v2)){
return -1;
}
return 1;
});
在 Chrome 70 以前,
sort
的算法比较特殊:10
个的时候,使用插入排序;10
个的时候,使用快速排序。众所周知:插入排序是稳定的,快速排序是并不稳定的。
从 Chrome 70 开始,V8 团队更新了排序算法,使用了 Timsort 算法。Timsort 排序算法是稳定的。
参考文章