qsort - quick sort


     #include <stdlib.h>

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


     The qsort() function is an implementation of the  quick-sort
     algorithm.  It  sorts a table of data in place. The contents
     of the table are sorted in ascending order according to  the
     user-supplied comparison function.

     The base argument points to the element at the base  of  the
     table.   The  nel  argument is the number of elements in the
     table.  The width argument specifies the size of  each  ele-
     ment  in bytes.  The compar argument is the name of the com-
     parison function, which is called with  two  arguments  that
     point to the elements being compared.

     The function must return an integer less than, equal to,  or
     greater than zero to indicate if the first argument is to be
     considered less than, equal to, or greater than  the  second

     The contents of the table  are  sorted  in  ascending  order
     according to the user supplied comparison function.


     Example 1: Program sorts.

     The following program sorts a simple array:

     #include <stdlib.h>
     #include <stdio.h>

     static int
     intcompare(const void *p1, const void *p2)
         int i = *((int *)p1);
         int j = *((int *)p2);

         if (i > j)
             return (1);
         if (i < j)
             return (-1);
         return (0);

         int i;
         int a[10] = { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 };
         size_t nelems = sizeof (a) / sizeof (int);

         qsort((void *)a, nelems, sizeof (int), intcompare);

         for (i = 0; i < nelems; i++) {
             (void) printf("%d ", a[i]);

         (void) printf("\n");
         return (0);


     See attributes(5) for descriptions of the  following  attri-

    |       ATTRIBUTE TYPE        |       ATTRIBUTE VALUE       |
    | MT-Level                    | MT-Safe                     |


     sort(1), bsearch(3C), lsearch(3C), string(3C), attributes(5)


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

     The relative order in the output of two items  that  compare
     as equal is unpredictable.

Man(1) output converted with man2html