sort/comb-sort
Comb Sort
- best
- O(n log n)
- average
- O(n^2 / 2^p)
- worst
- O(n^2)
- space
- O(1)
- stability
- unstable
- method
- comparison
p is how many times the gap shrank
pick a language to open the code
def comb_sort(a): gap = len(a) swapped = True while gap > 1 or swapped: gap = max(1, gap * 10 // 13) swapped = False for i in range(len(a) - gap): if a[i] > a[i + gap]: a[i], a[i + gap] = a[i + gap], a[i] swapped = True
function combSort(a) { let gap = a.length; let swapped = true; while (gap > 1 || swapped) { gap = Math.max(1, Math.floor((gap * 10) / 13)); swapped = false; for (let i = 0; i + gap < a.length; i++) { if (a[i] > a[i + gap]) { [a[i], a[i + gap]] = [a[i + gap], a[i]]; swapped = true; } } } }
static void swap(int a[], int i, int j) { int t = a[i]; a[i] = a[j]; a[j] = t; } void comb_sort(int a[], int n) { int gap = n; int swapped = 1; while (gap > 1 || swapped) { gap = gap * 10 / 13; if (gap < 1) gap = 1; swapped = 0; for (int i = 0; i + gap < n; i++) { if (a[i] > a[i + gap]) { swap(a, i, i + gap); swapped = 1; } } } }
void comb_sort(std::vector<int>& a) { size_t gap = a.size(); bool swapped = true; while (gap > 1 || swapped) { gap = std::max<size_t>(1, gap * 10 / 13); swapped = false; for (size_t i = 0; i + gap < a.size(); i++) { if (a[i] > a[i + gap]) { std::swap(a[i], a[i + gap]); swapped = true; } } } }
static void CombSort(int[] a) { int gap = a.Length; bool swapped = true; while (gap > 1 || swapped) { gap = Math.Max(1, gap * 10 / 13); swapped = false; for (int i = 0; i + gap < a.Length; i++) { if (a[i] > a[i + gap]) { (a[i], a[i + gap]) = (a[i + gap], a[i]); swapped = true; } } } }
static void swap(int[] a, int i, int j) { int t = a[i]; a[i] = a[j]; a[j] = t; } static void combSort(int[] a) { int gap = a.length; boolean swapped = true; while (gap > 1 || swapped) { gap = Math.max(1, gap * 10 / 13); swapped = false; for (int i = 0; i + gap < a.length; i++) { if (a[i] > a[i + gap]) { swap(a, i, i + gap); swapped = true; } } } }