Algorithm Implementation/Sorting/Comb sort
Python
def update_gap(gap): gap = (gap * 10) / 13 if gap == 9 or gap == 10: gap = 11 return max(1, gap) def combsort(x): gap = len(x) swapped = True if gap < 2: return while gap > 1 or swapped: gap = update_gap(gap) swapped = False for i in range(0, len(x) - gap, gap): if x[i] > x[i + gap]: x[i], x[i + gap] = x[i + gap], x[i] swapped = True
Java
private static int newGap(int gap) { gap = gap * 10 / 13; if(gap == 9 || gap == 10) gap = 11; if(gap < 1) return 1; return gap; } private static void sort(int a[]) { int gap = a.length; boolean swapped; do { swapped = false; gap = newGap(gap); for(int i = 0; i < (a.length - gap); i++) { if(a[i] > a[i + gap]) { swapped = true; int temp = a[i]; a[i] = a[i + gap]; a[i + gap] = temp; } } } while(gap > 1 || swapped); }
C++
int newGap(int gap){ gap /= 1.3; if(gap == 9 || gap == 10) gap = 11; if(gap < 1) return 1; return gap; } void combSort(int a[], int len){ int gap = len; bool swapped; do{ swapped = false; gap = newGap(gap); for(int i=0; i < len-gap; ++i){ if(a[i] > a[i+gap]){ swapped = true; swap(a[i], a[i+gap]); } } }while(gap > 1 || swapped); }