分析

快速排序采用的是分治策略。
对一项复杂的任务,进行拆分成不同的小任务。直至到达基线条件,终止拆分。
每次递归操作,都会让任务更靠近基线条件。
快速排序 - 图1

代码实现

  1. function quickSort(arr){
  2. if(arr.length <2){
  3. return arr
  4. }else{
  5. // pivot获取数组的第一个元素,并且要在原数组中移除
  6. let left = [], right=[], pivot = arr.splice(0,1)[0];
  7. for(let i=0; i< arr.length; i++){
  8. if(arr[i]<pivot){
  9. left.push(arr[i])
  10. } else {
  11. right.push(arr[i])
  12. }
  13. }
  14. return [...quickSort(left), pivot, ...quickSort(right)]
  15. }
  16. }