Quick Sort

Time: O(nlogn)

Space: O(n)

function quickSort(arr) {
  quickSortHelper(arr, 0, arr.length - 1);
  return arr;
}

function partition(arr, s, e) {
  let pointer = s;
  let left = s;
  while (left < e) {
    if (arr[left] < arr[e]) {
      swap(arr, left, pointer);
      pointer++;
    }  

    left++;
  }

  swap(arr, pointer, e);
  return pointer;
}

function quickSortHelper(arr, s, e) {
  if (s >= e) {
    return;
  }
  
  const pivotIndex = partition(arr, s, e);
  const left = quickSortHelper(arr, s, pivotIndex - 1);
  const right = quickSortHelper(arr, pivotIndex + 1, e);
}

function swap(arr, a, b) {
  [arr[b], arr[a]] = [arr[a], arr[b]];
}

// Do not edit the line below.
exports.quickSort = quickSort;

Last updated