/* shellsort.c; cpl3.5 */ char Switch(void*, void*); /* Return zero if first comes before second - non-zero otherwise */ void shellsort (void* v[], short n); /* shellsort: sort v[0]...v[n-1] into increasing order */ void shellsort (void* v[], short n) { short gap, i, j; void *temp; for (gap = n/2; gap > 0; gap /= 2) for (i = gap; i < n; i++) for (j=i-gap; j>=0 && Switch(v[j],v[j+gap]); j-=gap) { temp = v[j]; v[j]= v[j+gap]; v[j+gap] = temp; } }