Qsort


qsort is a C standard library function that implements a polymorphic sorting algorithm for arrays of arbitrary objects according to a user-provided comparison function. It is named after the "quicker sort" algorithm, which was originally used to implement it in the Unix C library, although the C standard does not require it to implement quicksort.
Implementations of the qsort function achieve polymorphism, the ability to sort different kinds of data, by taking a function pointer to a three-way comparison function, as well as a parameter that specifies the size of its individual input objects. The C standard requires the comparison function to implement a total order on the items in the input array.
A qsort function was in place in Version 3 Unix of 1973, but was then an assembler subroutine. A C version, with roughly the interface of the standard C version, was in-place in Version 6 Unix.
It was rewritten in 1983 at Berkeley.
The function was standardized in ANSI C.

Example

The following piece of C code shows how to sort a list of integers using qsort.

  1. include
/* Comparison function. Receives two generic pointers to the items under comparison. */
int compare_ints
/* Sort an array of n integers, pointed to by a. */
void sort_ints