void srt_bins_sort(int *h, int n, int cmp(int x, int y), int sgn) { int m; for (m = 1; m < n; m++) { /* Insert {h[m]} among {h[0..m-1]}: */ int v = h[m], i = m; while ((i > 0) && (sgn*cmp(v, h[i-1]) < 0)) { h[i] = h[i-1]; i--; } h[i] = v; } }