Array.prototype.sort 在 chrome 59 版的浏览器上的 v8 源码呢?...n 轮快排后的分段数组,只要数组长度小于等于 10,都换成插入排序来处理
那么,为什么要使用这种快速排序结合插入排序的方式呢?...这是因为,插入排序对于数组基本有序的场景,速度很快,最优情况下时间复杂度可以达到 O(n);而快速排序则是能够将无序数组快速的变化为基本有序
而插入排序是稳定排序,快速排序是不稳定排序,所以会出现位置错误的原因肯定是在快速排序的处理里的...v1、v2 这三者的本身存的应该也是要对应首、基准、尾这个样子
但源代码在一开始取这三个值时,却将 v1=尾元素,v2=基准元素,所以这个地方我们还需要修改下:
// 2...._sort(()=>0)
// [1, 2, 13, 14, 5, 6, 17, 18, 9, 10, 11, 12, 31, 41]
以上,就是本篇内容
当然,在新版本的浏览器上这个问题就被修复了,至于是从哪个版本开始