What sorting algorithm does qsort use?
c, sorting
Solution
The implementation of `qsort` is not specified: an implementation may use any sorting algorithm. Interestingly, the sort does not need to be stable, and there is no complexity requirement.
The entire specification of `qsort` (C11 §7.22.5.2) is as follows:
The `qsort` function
Synopsis
#include <stdlib.h>
void qsort(void *base, size_t nmemb, size_t size,
int (*compar)(const void *, const void *));
Description
The `qsort` function sorts an array of `nmemb` objects, the initial element of which is pointed to by `base`. The size of each object is specified by `size`.
The contents of the array are sorted into ascending order according to a comparison function pointed to by compar, which is called with two arguments that point to the objects being compared. The function shall return an integer less than, equal to, or greater than zero if the first argument is considered to be respectively less than, equal to, or greater than the second.
If two elements compare as equal, their order in the resulting sorted array is unspecified.
Returns
The `qsort` function returns no value.
Problem
I can't find any information regarding what sorting algorithm C `qsort` function uses. Is it quicksort? It is not mentioned in man.