algoalgo-world
algoalgo-world/sort/stooge-sort
sort/stooge-sort

Stooge Sort

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

pick a language to open the code

def stooge_sort(a, lo, hi):
    if a[lo] > a[hi]:
        a[lo], a[hi] = a[hi], a[lo]
    if hi - lo + 1 > 2:
        third = (hi - lo + 1) // 3
        stooge_sort(a, lo, hi - third)
        stooge_sort(a, lo + third, hi)
        stooge_sort(a, lo, hi - third)
function stoogeSort(a, lo, hi) {
  if (a[lo] > a[hi]) [a[lo], a[hi]] = [a[hi], a[lo]];
  if (hi - lo + 1 > 2) {
    const third = Math.floor((hi - lo + 1) / 3);
    stoogeSort(a, lo, hi - third);
    stoogeSort(a, lo + third, hi);
    stoogeSort(a, lo, hi - third);
  }
}
static void swap(int a[], int i, int j) {
    int t = a[i];
    a[i] = a[j];
    a[j] = t;
}

void stooge_sort(int a[], int lo, int hi) {
    if (a[lo] > a[hi]) swap(a, lo, hi);
    if (hi - lo + 1 > 2) {
        int third = (hi - lo + 1) / 3;
        stooge_sort(a, lo, hi - third);
        stooge_sort(a, lo + third, hi);
        stooge_sort(a, lo, hi - third);
    }
}
void stooge_sort(std::vector<int>& a, int lo, int hi) {
    if (a[lo] > a[hi]) std::swap(a[lo], a[hi]);
    if (hi - lo + 1 > 2) {
        int third = (hi - lo + 1) / 3;
        stooge_sort(a, lo, hi - third);
        stooge_sort(a, lo + third, hi);
        stooge_sort(a, lo, hi - third);
    }
}
static void StoogeSort(int[] a, int lo, int hi) {
    if (a[lo] > a[hi]) (a[lo], a[hi]) = (a[hi], a[lo]);
    if (hi - lo + 1 > 2) {
        int third = (hi - lo + 1) / 3;
        StoogeSort(a, lo, hi - third);
        StoogeSort(a, lo + third, hi);
        StoogeSort(a, lo, hi - third);
    }
}
static void swap(int[] a, int i, int j) {
    int t = a[i];
    a[i] = a[j];
    a[j] = t;
}

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