升序排列数组

  1. function quickSort(arr) {
  2. const len = arr.length;
  3. if (len < 2) {
  4. return arr;
  5. }
  6. const pivot = arr[0];
  7. let small = [];
  8. let large = [];
  9. for (let i = 1; i < len; i++) {
  10. arr[i] > pivot ? large.push(arr[i]) : small.push(arr[i]);
  11. }
  12. return quickSort(small).concat(pivot, quickSort(large));
  13. }

算法测试

  1. console.log(quickSort([5, 8, 1, 4, 3, 0]));
  2. // [ 0, 1, 3, 4, 5, 8 ]
  3. console.log(quickSort([1, 5, 2, 23, 56, 34, 20]));
  4. // [ 1, 2, 5, 20, 23, 34, 56 ]
  5. console.log(quickSort([5, 8, 2, 5, 3, 1]));
  6. // [ 1, 2, 3, 5, 5, 8 ]