快速排序的js实现
该方法的基本思想是:
1.先从数列中取出一个数作为基准数。
2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。
3.再对左右区间重复第二步,直到各区间只有一个数。
var quickSort = function(arr) {
if (arr.length <= 1) { return arr; }
var pivotIndex = Math.floor(arr.length / 2);
var pivot = arr.splice(pivotIndex, 1)[0];
var left = [];
var right = [];
for (var i = 0; i < arr.length; i++){
if (arr[i] < pivot) {
left.push(arr[i]);
} else {
right.push(arr[i]);
}
}
return quickSort(left).concat([pivot], quickSort(right));
};
ES6的实现
function quickSort(arr) {
if (!arr.length) {
return []
}
const [pivot,...rest] = arr;
return [
...quickSort(rest.filter(item => item < pivot)),
pivot,
...quickSort(rest.filter(item => item >= pivot))
]
}
https://blog.csdn.net/morewindows/article/details/6684558
https://www.cnblogs.com/Bonnie3449/p/9221039.html
https://juejin.im/post/5966f57051882568b20dc3e1#heading-3