# qsort(3C)

```

```

## NAME

```     qsort - quick sort

```

## SYNOPSIS

```     #include <stdlib.h>

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

```

## DESCRIPTION

```     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
argument.

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

```

## EXAMPLES

```     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
main()
{
int i;
int a = { 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);
}

```

## ATTRIBUTES

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

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

```

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

```

## NOTES

```     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