快速排序:
思路分析:取中间值,分左右两个数组,左边放比取的中间值小的,右边放取的比中间值大的。递归调用left和right,然后concat函数拼接。
涉及小知识:
1.concat 连接数组,方法内接受一个或者多个值,不会改变原始数组,返回一个副本。
2. Math.floor()向下取整。
function quickSort(arr) {
if (arr.length <= 1) {
return arr;
}
var num = Math.floor(arr.length/2); // 取中间的一个数组的下标
var numVal = arr.splice(num, 1); // 取出中间值
var left = [];//定义左边空数组,左边这个放比numVal小的数
var right = [];// 定义右边空数组,右边这个放比numVal大的数
for (var i = 0;i< arr.length;i++) {
if (arr[i] < numVal) {
left.push(arr[i]);
} else {
right.push(arr[i]);
}
}
return quickSort(left).concat(numVal, quickSort(right));
}