📄 qsort.c,v
字号:
head 1.1;access;symbols;locks dls:1.1; strict;comment @ * @;1.1date 97.09.21.19.27.40; author dls; state Dist;branches;next ;desc@@1.1log@pre-3e code@text@static int (*qscmp)();static int qses, qs1(), qsexc(), qstexc();qsort(a, n, es, fc)char *a;unsigned n;int es;int (*fc)();{ qscmp = fc; qses = es; qs1(a, a+n*es);}static qs1(a, l)char *a, *l;{ register char *i, *j; register es; char **k; char *lp, *hp; int c; unsigned n; es = qses;start: if((n=l-a) <= es) return; n = es * (n / (2*es)); hp = lp = a+n; i = a; j = l-es; for(;;) { if(i < lp) { if((c = (*qscmp)(i, lp)) == 0) { qsexc(i, lp -= es); continue; } if(c < 0) { i += es; continue; } }loop: if(j > hp) { if((c = (*qscmp)(hp, j)) == 0) { qsexc(hp += es, j); goto loop; } if(c > 0) { if(i == lp) { qstexc(i, hp += es, j); i = lp += es; goto loop; } qsexc(i, j); j -= es; i += es; continue; } j -= es; goto loop; } if(i == lp) { if(lp-a >= l-hp) { qs1(hp+es, l); l = lp; } else { qs1(a, lp); a = hp+es; } goto start; } qstexc(j, lp -= es, i); j = hp -= es; }}static qsexc(i, j)char *i, *j;{ register char *ri, *rj, c; int n; n = qses; ri = i; rj = j; do { c = *ri; *ri++ = *rj; *rj++ = c; } while(--n);}static qstexc(i, j, k)char *i, *j, *k;{ register char *ri, *rj, *rk; int c; int n; n = qses; ri = i; rj = j; rk = k; do { c = *ri; *ri++ = *rk; *rk++ = *rj; *rj++ = c; } while(--n);}@
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -