思路:取一个数组中间的序列,然后获取此序列对应的数,分割成左右两个空数组
循环,比这个i大的放到右边数组,小的放到左边的数组,最后递归拼接。
//快速排序
let arr = [5,3,4,7,8,9,6,3,2,0,1];
function quick(arr){
if(arr.length<1){
return arr
}
else{
//先获取数组的中位
let arrindex = Math.floor(arr.length/2);
//取到中间的值
let middleValue = arr.splice(arrindex,1)[0];
let leftArr = [];
let rightArr=[];
for (let i = 0; i < arr.length; i++) {
let item = arr[i]
item>middleValue?rightArr.push(item):leftArr.push(item)
}
return quick(leftArr).concat(middleValue,quick(rightArr))
}
}
console.log(quick(arr));