
/*
 * SORT.C
 *
 * a QuickSort is used for speed, simplicity, and small code size.
 *
 */

extern short QSplit();


QuickSort(av, n)
char *av[];
short n;
{
    short b;

    if (n > 0) {
	b = QSplit(av, n);
	QuickSort(av, b);
	QuickSort(av+b+1, n - b - 1);
    }
}


/*
 * QSplit called as a second routine so I don't waste stack on QuickSort's
 * recursivness.
 */


short
QSplit(av, n)
register char *av[];
short n;
{
    register short i, b;
    register char *element, *scr;

    element = av[0];
    for (b = 0, i = 1; i < n; ++i) {
	if (strcmp(av[i], element) < 0) {
	    ++b;
	    scr = av[i]; av[i] = av[b]; av[b] = scr;
	}
    }
    scr = av[0]; av[0] = av[b]; av[b] = scr;
    return (b);
}



