qsort (Windows CE 5.0)
Developing an Application > Microsoft C Run-time Library for Windows CE > Run-time Library Reference
Performs a quick sort.
void qsort( void*base,size_tnum,size_twidth,int( __cdecl*compare)( constvoid*elem1,constvoid*elem2) );
Parameters
- base
Start of target array. - num
Array size in elements. - width
Element size in bytes. - compare
Comparison function. - elem1
Pointer to the key for the search. - elem2
Pointer to the array element to be compared with the key.
Return Values
None.
Remarks
The qsort function implements a quick-sort algorithm to sort an array of num elements, each of width bytes.
The argument base is a pointer to the base of the array to be sorted. qsort overwrites this array with the sorted elements.
The argument compare is a pointer to a user-supplied routine that compares two array elements and returns a value specifying their relationship.
qsort calls the compare routine one or more times during the sort, passing pointers to two array elements on each call:
compare**( (void *)**elem1, (void *)elem2);
The routine must compare the elements and return one of the following values:
Return Value | Description |
---|---|
< 0 | elem1 less than elem2 |
0 | elem1 equivalent to elem2 |
> 0 | elem1 greater than elem2 |
The array is sorted in increasing order, as defined by the comparison function.
To sort an array in decreasing order, reverse the sense of "greater than" and "less than" in the comparison function.
Example
/* QSORT.C: This program reads the command-line
* parameters and uses qsort to sort them. It
* then displays the sorted arguments.
*/
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
int compare( const void *arg1, const void *arg2 );
void main( int argc, char **argv )
{
int i;
/* Eliminate argv[0] from sort: */
argv++;
argc--;
/* Sort remaining args using Quicksort algorithm: */
qsort( (void *)argv, (size_t)argc, sizeof( char * ), compare );
/* Output sorted list: */
for( i = 0; i < argc; ++i )
printf( "%s ", argv[i] );
printf( "\n" );
}
int compare( const void *arg1, const void *arg2 )
{
/* Compare all of both strings: */
return _stricmp( * ( char** ) arg1, * ( char** ) arg2 );
}
Output
[C:\code]qsort every good boy deserves favor
boy deserves every favor good
Requirements
OS Versions: Windows CE 2.0 and later.
Header: stdlib.h and search.h.
Link Library: coredll.dll.
See Also
Send Feedback on this topic to the authors