Przerywane jest wykonywanie algorytmu, gdy podczas przejścia przez całą tablicę nie nastąpiła zamiana.
Wariant Combsort 11: rozpiętość 9 i 10 zastępowane jest 11
Przykład w języku C / C++ tab - tablica elementów (w przykładzie tablica liczb całkowitych) gap - rozpiętość; w kolejnych iteracjach pętli dzielona jest przez współczynnik 1.3 tmp - zmienna całkowitoliczbowa; do zamiany elementów swapped - zmienna logiczna; czy dokonano zamiany elementów
void combSort(int* tab, int size) { int gap = size, tmp; bool swapped = true; while (gap > 1 || swapped){ // jeśli gap = 1 i nie dokonano zamiany - wyjście z pętli gap = gap * 10 / 13; if(gap==0) gap=1; swapped = false; for ( int i = 0; i + gap < size; ++i ) { // wykonuj od 0 do ostatniego elementu tablicy if ( tab[i + gap] < tab[i] ) { // porównanie elementów odległych o rozpiętość tmp = tab[i]; // zamiana elementów tab[i] = tab[i + gap]; tab[i + gap] = tmp; swapped = true;
Funkcja do wyznaczania współczynnika rozpiętości (Wariant Combsort 11)
int newGap(int gap) { gap = gap * 10 / 13; if ( gap == 9 || gap == 10 ) gap = 11; if(gap==0) gap=1; return gap; }
Przykład w języku Pascal
procedure Combsort(var a : array of Integer; n:Integer);