COHERENT manpages

This page displays the COHERENT manpage for qsort() [Sort arrays in memory].

List of available manpages
Index


qsort() -- General Function (libc)

Sort arrays in memory
#include <stdlib.h>
void qsort(data, n, size, comp)
char *data; int n, size; int (*comp)();

qsort() is  a generalized algorithm  for sorting arrays of  data in memory,
using  C. A.  R.  Hoare's ``quicksort''  algorithm.  qsort()  works with  a
sequential array  of memory called data,  which is divided into  n parts of
size bytes  each.  In  practice, data  is usually an  array of  pointers or
structures, and size is the  sizeof the pointer or structure.  Each routine
compares pairs of items  and exchanges them as required.  The user-supplied
routine  to  which  comp points  performs  the  comparison.   It is  called
repeatedly, as follows:

    (*comp)(p1, p2)
    char *p1, *p2;

Here, p1 and p2 each point  to a block of size bytes in the data array.  In
practice, they are usually  pointers to pointers or pointers to structures.
The comparison  routine must return  a negative, zero,  or positive result,
depending on whether  p1 is logically less than, equal  to, or greater than
p2, respectively.

Example

For an example of this function, see the entry for malloc().

See Also

libc,
shellsort(),
strcmp(),
stdlib.h,
strncmp()
The Art of Computer Programming, vol. 3
ANSI Standard, §7.10.5.2
POSIX Standard, §8.1

Notes

The COHERENT library  also includes the sorting function shellsort(). These
functions use  different algorithms for  sorting items; each  algorithm has
its  strengths and  weaknesses.   In general,  the  quicksort algorithm  is
faster than the shellsort algorithm for large arrays, whereas the shellsort
algorithm  is  faster for  small  arrays  (say, 50  items  or fewer).   The
quicksort algorithm  also performs poorly on arrays with  a small number of
keys, e.g., an array of 1,000 items whose keys are all `7' and `8'.

To get around these limitations, the COHERENT implementation of qsort() has
an  adaptive algorithm  that  recognizes when  the  quicksort algorithm  is
performing badly, and calls shellsort() in its place.