/*------------------------------------------------------------------- | SHELL SORT | | Shell sort. See "C Programmer's Library", QUE publishing. | -------------------------------------------------------------------*/ /*------------------------------------------------------------------- | Shell sort modified for determining intervals. -------------------------------------------------------------------*/ int ssort(n, comp, swap) unsigned n; int (*comp)(); int (*swap)(); { int m; int h,i,j,k; m=n; while ( m /= 2 ) { k = n - m; j = 1; do { i = j; do { h = i + m; if ( (*comp)(i-1, h-1) > 0 ) { (*swap)(i-1, h-1); i -= m; } else break; } while ( i >= 1 ); j += 1; } while ( j <= k ); } }