基本思路
- 每次排序选定一个元素为基准点(一般为中间项)
- 把小于基准点的所有元素放到基准点的左边数组
- 把大于基准点的所有元素放到基准点的右边数组
- 然后递归让左右两边的数组持续处理,一直到左右两边都排好序,当数组只有一项时不进行排序
- 最后把所有组连接一起
时间复杂度
let quickSort = (arr) => {if(arr.length <= 1) return arr;const privotIndex = Math.floor(arr.length / 2);const privot = arr.splice(privotIndex,1)[0];const lArr = [], rArr = [];for(let i=0; i < arr.length; i++) {const item = arr[i];item < privot ? lArr.push(item) : rArr.push(item);}return quickSort(lArr).concat(privot, quickSort(rArr));}
