Man Linux: Main Page and Category List

NAME

       qsort - sort a table of data

SYNOPSIS

       #include <stdlib.h>

       void qsort(void *base, size_t nel, size_t width,
              int (*compar)(const void *, const void *));

DESCRIPTION

       The  qsort()  function  shall sort an array of nel objects, the initial
       element of which is pointed to by base. The size  of  each  object,  in
       bytes,  is specified by the width argument. If the nel argument has the
       value zero, the comparison function pointed to by compar shall  not  be
       called and no rearrangement shall take place.

       The application shall ensure that the comparison function pointed to by
       compar does not alter the contents of the  array.   The  implementation
       may  reorder  elements  of  the  array  between calls to the comparison
       function, but shall not alter the contents of any individual element.

       When the same objects (consisting of width bytes, irrespective of their
       current  positions  in  the  array)  are  passed  more than once to the
       comparison function, the results shall be consistent with one  another.
       That is, they shall define a total ordering on the array.

       The  contents of the array shall be sorted in ascending order according
       to a comparison function. The compar  argument  is  a  pointer  to  the
       comparison  function,  which is called with two arguments that point to
       the elements being compared. The  application  shall  ensure  that  the
       function  returns an integer less than, equal to, or greater than 0, if
       the first argument is considered respectively less than, equal  to,  or
       greater  than  the second. If two members compare as equal, their order
       in the sorted array is unspecified.

RETURN VALUE

       The qsort() function shall not return a value.

ERRORS

       No errors are defined.

       The following sections are informative.

EXAMPLES

       None.

APPLICATION USAGE

       The comparison function need not compare every byte, so arbitrary  data
       may  be  contained  in  the  elements  in  addition to the values being
       compared.

RATIONALE

       The requirement that each argument (hereafter referred to as p) to  the
       comparison  function is a pointer to elements of the array implies that
       for every call, for each argument  separately,  all  of  the  following
       expressions are nonzero:

              ((char *)p - (char *)base) % width == 0
              (char *)p >= (char *)base
              (char *)p < (char *)base + nel * width

FUTURE DIRECTIONS

       None.

SEE ALSO

       The Base Definitions volume of IEEE Std 1003.1-2001, <stdlib.h>

COPYRIGHT

       Portions  of  this text are reprinted and reproduced in electronic form
       from IEEE Std 1003.1, 2003 Edition, Standard for Information Technology
       --  Portable  Operating  System  Interface (POSIX), The Open Group Base
       Specifications Issue 6, Copyright (C) 2001-2003  by  the  Institute  of
       Electrical  and  Electronics  Engineers, Inc and The Open Group. In the
       event of any discrepancy between this version and the original IEEE and
       The  Open Group Standard, the original IEEE and The Open Group Standard
       is the referee document. The original Standard can be  obtained  online
       at http://www.opengroup.org/unix/online.html .