23届前端秋招ready Day1 ——js实现快速排序

75 阅读1分钟

核心为分治法,平均时间复杂度为O(nlogn)。

快速排序基本思想:

选取数组中的一个数作为基准数,一般就是直接选取数组的第一个数,然后进行排序,将比基准数小的数放在基准数左边,比基准数大的数放在基准数右边,再通过递归对左右两边继续排序。

JS代码实现快速排序

function partition(arr, low, high) {
  let pivot = arr[low];
  while (low < high) {
    while (low < high && arr[high] > pivot) {
      --high;
    }
    arr[low] = arr[high];
    while (low < high && arr[low] <= pivot) {
      ++low;
    }
    arr[high] = arr[low];
  }
  arr[low] = pivot;
  return low;
}

function quickSort(arr, low, high) {
  if (low < high) {
    let pivot = partition(arr, low, high);
    quickSort(arr, low, pivot - 1);
    quickSort(arr, pivot + 1, high);
  }
  return arr;
}