algoalgo-world
algoalgo-world/sort/slow-sort
sort/slow-sort

Slow Sort

best
n^O(log n)
average
n^O(log n)
worst
n^O(log n)
space
O(n)
stability
unstable
method
comparison

pick a language to open the code

def slow_sort(a, lo, hi):
    if lo >= hi:
        return
    mid = (lo + hi) // 2
    slow_sort(a, lo, mid)
    slow_sort(a, mid + 1, hi)
    if a[mid] > a[hi]:
        a[mid], a[hi] = a[hi], a[mid]
    slow_sort(a, lo, hi - 1)
function slowSort(a, lo, hi) {
  if (lo >= hi) return;
  const mid = (lo + hi) >> 1;
  slowSort(a, lo, mid);
  slowSort(a, mid + 1, hi);
  if (a[mid] > a[hi]) [a[mid], a[hi]] = [a[hi], a[mid]];
  slowSort(a, lo, hi - 1);
}
static void swap(int a[], int i, int j) {
    int t = a[i];
    a[i] = a[j];
    a[j] = t;
}

void slow_sort(int a[], int lo, int hi) {
    if (lo >= hi) return;
    int mid = (lo + hi) / 2;
    slow_sort(a, lo, mid);
    slow_sort(a, mid + 1, hi);
    if (a[mid] > a[hi]) swap(a, mid, hi);
    slow_sort(a, lo, hi - 1);
}
void slow_sort(std::vector<int>& a, int lo, int hi) {
    if (lo >= hi) return;
    int mid = (lo + hi) / 2;
    slow_sort(a, lo, mid);
    slow_sort(a, mid + 1, hi);
    if (a[mid] > a[hi]) std::swap(a[mid], a[hi]);
    slow_sort(a, lo, hi - 1);
}
static void SlowSort(int[] a, int lo, int hi) {
    if (lo >= hi) return;
    int mid = (lo + hi) / 2;
    SlowSort(a, lo, mid);
    SlowSort(a, mid + 1, hi);
    if (a[mid] > a[hi]) (a[mid], a[hi]) = (a[hi], a[mid]);
    SlowSort(a, lo, hi - 1);
}
static void swap(int[] a, int i, int j) {
    int t = a[i];
    a[i] = a[j];
    a[j] = t;
}

static void slowSort(int[] a, int lo, int hi) {
    if (lo >= hi) return;
    int mid = (lo + hi) / 2;
    slowSort(a, lo, mid);
    slowSort(a, mid + 1, hi);
    if (a[mid] > a[hi]) swap(a, mid, hi);
    slowSort(a, lo, hi - 1);
}
watch it run, then read it