基本思想:
- 先选择基准(一般选择中间位置)
- 对数组剩下的元素进行遍历,小于基准的放在基准左边,大于基准的放在基准右边
- 对左边和右边的元素重复调用前两步,直到只剩下一个元素为止
特点:速度快
function quickSort(arr) {
if (arr.length <= 1) {
return arr;
}
var baseIndex = Math.floor(arr.length /2 );
var base = arr.splice(baseIndex,1);
var left = [];
var right = [];
for (var i = 0; i < arr.length; i ++) {
if (arr[i] < base[0]) {
left.push(arr[i]);
} else {
right.push(arr[i]);
}
}
return quickSort(left).concat(base, quickSort(right));
}
var arr = [3, 2, 5, 7, 1, 4, 8];
var res = quickSort(arr);
console.log(res); // [1, 2, 3, 4, 5, 7, 8]