typedef struct {
int weight;
char *string;
} Object;
#define Lt(a,b) ((a).weight < (b).weight)
#define sort(a,n) ptsort(a, a+n-1)
ptsort(l, m)
Object *l, *m;
{
register Object *i, *j; Object x, t;
while (l < m) {
i = l; j = m;
x = i[(j-i)/2];
while (i <= j) {
while (Lt(*i, x)) i++;
while (Lt(x, *j)) j--;
if (i <= j) {
t = *i;
*i++ = *j;
*j-- = t;
}
}
if (j-l <= m-i) {
ptsort(l, j);
l = i;
} else {
ptsort(i, m);
m = j;
}
}
}