Quicksort algorithm.

Quicksort algorithm.

 



Sort elements of array

Sorts the num elements of the array pointed to by base, each element size bytes long, using the compar function to determine the order.

The sorting algorithm used by this function compares pairs of elements by calling the specified compar function with pointers to them as argument.

The function does not return any value, but modifies the content of the array pointed to by base reordering its elements as defined by compar.

The order of equivalent elements is undefined.

Parameters:

1.base
Pointer to the first object of the array to be sorted, converted to a void*.

2.num
Number of elements in the array pointed to by base.
size_t is an unsigned integral type.

3.size
Size in bytes of each element in the array.
size_t is an unsigned integral type.

4.compar
Pointer to a function that compares two elements.
This function is called repeatedly by qsort to compare two elements. It shall follow the following prototype:
 
int compar (const void* p1, const void* p2);

Taking two pointers as arguments (both converted to const void*). The function defines the order of the elements by returning (in a stable and transitive manner):



int compareMyType (const void * a, const void * b)
{
  if ( *(MyType*)a < *(MyType*)b ) return -1;
  if ( *(MyType*)a == *(MyType*)b ) return 0;
  if ( *(MyType*)a > *(MyType*)b ) return 1;
}

Example:

/* qsort example */
#include <stdio.h> /* printf */
#include <stdlib.h> /* qsort */

int values[] = { 40, 10, 100, 90, 20, 25 };

int compare (const void * a, const void * b)
{
  return ( *(int*)a - *(int*)b );
}

int main ()
{
  int n;
  qsort (values, 6, sizeof(int), compare);
  for (n=0; n<6; n++)
     printf ("%d ",values[n]);
  return 0;
}

Output:

10 20 25 40 90 100

Post a Comment

0 Comments