-
在数列中选择一个数作为一个点
-
将比这个点大的数放进一个右边的区间,比这个点小的数放进左边的区间
- 连接左右区间、左右区间重复执行2过程
var quickSort = function (arr) {
if (arr.length <=1){return arr;} //数组只有一个数或者没有,直接返回数组
var pointIndex = Math.floor(arr.length/2); //选择中间那个数作为基准点
var point = arr.splice(pointIndex,1); //从数列中将这个点取出
var left = [];
var right = [];
for (var i=0;i<arr.length;i++){ //遍历数列,将比基准点大的数放到右区间,比基准点小的数放到左区间
if (arr[i]<point){
left.push(arr[i]);
}
else{
right.push(arr[i]);
}
}
return quickSort(left).concat([point],quickSort(right)); //连接左右区间,左右区间回调
}