Provided by: manpages-posix-dev_2.16-1_all bug

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 .