6.19.27 qsort Function
Sort an array of objects.
Include
<stdlib.h>
Prototype
void qsort(void * base, size_t nmemb, size_t size, int (* compar)(const void *,
const void *));
Argument
base
- the array to sort
nmemb
- the number of objects in the array
size
- the size of each object being sorted
compar
- the comparison function to be used
Remarks
The qsort
function orders the elements in the
base
array so that they are in an ascending order, as specified by
the function pointed to by compar
. The comparison function should take
two arguments, and should return an integer value 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.
Example
See the notes at the beginning of this chapter or section for
information on using printf()
or scanf()
(and other functions reading and writing the stdin
or
stdout
streams) in the example code.
#include <stdlib.h>
#include <stdio.h>
int cmp (int *num1, int *num2)
{
if (*num1 < *num2)
return -1;
if (*num1 > *num2)
return 1;
return 0;
}
int main (void)
{
int array[] = {12, 92, 0, -1, 6, -24, 101};
size_t arraylen = sizeof(array) / sizeof(int);
qsort (array, arraylen, sizeof(int), (int (*)(const void *, const void *)) cmp);
printf("Array elements:\n");
for (int i=0; i != arraylen; i++) {
printf("%d%s", array[i], i==arraylen-1 ? "\n" : " ");
}
}
Example Output
Array elements:
-24 -1 0 6 12 92 101