Slowsort

Multiply and surrender.

Best O(n^log n) Avg O(n^log n) Worst O(n^log n) Space O(n) Stable No In-place Yes Comparison-based

How it works

Multiply and surrender.

Implementation

function slowSort(arr, lo = 0, hi = arr.length - 1) {
  if (lo >= hi) return;
  let mid = Math.floor((lo + hi) / 2);
  slowSort(arr, lo, mid);
  slowSort(arr, mid + 1, hi);
  if (arr[hi] < arr[mid])
    [arr[hi], arr[mid]] = [arr[mid], arr[hi]];
  slowSort(arr, lo, hi - 1);
}