Annotation of researchv10no/cmd/ops/sort.c, revision 1.1

1.1     ! root        1: 
        !             2: typedef struct {
        !             3:        int weight;
        !             4:        char *string;
        !             5: } Object;
        !             6: 
        !             7: #define Lt(a,b)        ((a).weight < (b).weight)
        !             8: 
        !             9: #define sort(a,n)      ptsort(a, a+n-1)
        !            10: 
        !            11: ptsort(l, m)
        !            12: Object *l, *m;
        !            13: {
        !            14:        register Object *i, *j; Object x, t;
        !            15:        while (l < m) {
        !            16:                i = l; j = m;
        !            17:                x = i[(j-i)/2];
        !            18:                while (i <= j) {
        !            19:                        while (Lt(*i, x)) i++;
        !            20:                        while (Lt(x, *j)) j--;
        !            21:                        if (i <= j) {
        !            22:                                t = *i;
        !            23:                                *i++ = *j;
        !            24:                                *j-- = t;
        !            25:                        }
        !            26:                }
        !            27:                if (j-l <= m-i) {
        !            28:                        ptsort(l, j);
        !            29:                        l = i;
        !            30:                } else {
        !            31:                        ptsort(i, m);
        !            32:                        m = j;
        !            33:                }
        !            34:        }
        !            35: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.