快速排序的原理:
选择数组中的随便一个元素作为基准,
遍历数组,将大于它的元素放在右边,小于他的元素放在左边。
然后对左右两边的数组继续执行如上操作,如此递归直到左右两边的数组为1。
js简单实现代码
var quickSort = function (arr) {
var newArr=arr.concat();
if (newArr.length <= 1) { return newArr; }
var pivotIndex = Math.floor(newArr.length / 2);
var pivot = newArr.splice(pivotIndex, 1)[0];
var left = [];
var right = [];
for (var i = 0; i < newArr.length; i++) {
if (newArr[i] < pivot) {
left.push(newArr[i]);
} else {
right.push(newArr[i]);
}
}
return quickSort(left).concat([pivot], quickSort(right));
}
console.log(quickSort(arr))
console.log(arr)
/
直接绑定到Array
Array.prototype.quickSort = function(){
var newArr=this.concat();
if (newArr.length <= 1) { return newArr; }
var pivotIndex = Math.floor(newArr.length / 2);
var pivot = newArr.splice(pivotIndex, 1)[0];
var left = [];
var right = [];
for (var i = 0; i < newArr.length; i++) {
if (newArr[i] < pivot) {
left.push(newArr[i]);
} else {
right.push(newArr[i]);
}
}
return left.quickSort().concat([pivot], right.quickSort());
}
console.log(arr.quickSort())
console.log(arr)