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