sort/stooge-sort
臭皮匠排序
- 最好
- O(n^2.71)
- 平均
- O(n^2.71)
- 最坏
- O(n^2.71)
- 空间
- O(log n)
- 稳定性
- 不稳定
- 方式
- 比较
选一种语言就能看到代码
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); } }