Skip to content

Latest commit

 

History

History
121 lines (89 loc) · 3.74 KB

File metadata and controls

121 lines (89 loc) · 3.74 KB
titledescriptionms.dateapi_nameapi_locationapi_typetopic_typef1_keywordshelpviewer_keywords
qsort
Describes the Microsoft C runtime quick sort API `qsort`
8/2/2023
qsort
_o_qsort
msvcrt.dll
msvcr80.dll
msvcr90.dll
msvcr100.dll
msvcr100_clr0400.dll
msvcr110.dll
msvcr110_clr0400.dll
msvcr120.dll
msvcr120_clr0400.dll
ntdll.dll
ucrtbase.dll
api-ms-win-crt-utility-l1-1-0.dll
ntoskrnl.exe
DLLExport
apiref
qsort
qsort function
quick-sort algorithm
sorting arrays
arrays [CRT], sorting

qsort

Performs a quick sort. A more secure version of this function is available; see qsort_s.

Syntax

voidqsort( void*base, size_tnumber, size_twidth, int (__cdecl *compare )(constvoid*, constvoid*) );

Parameters

base
Start of target array.

number
Array size in elements.

width
Element size in bytes.

compare
Pointer to a user-supplied routine that compares two array elements and returns a value that specifies their relationship.

Remarks

The qsort function implements a quick-sort algorithm to sort an array of number elements, each of width bytes. The argument base is a pointer to the base of the array to be sorted. qsort overwrites this array by using the sorted elements.

qsort calls the compare routine one or more times during the sort, and passes pointers to two array elements on each call. If compare indicates two elements are the same, their order in the resulting sorted array is unspecified.

compare(constvoid*elem1, constvoid*elem2);

The routine compares the elements and returns one of the following values.

Compare function return valueDescription
< 0elem1 less than elem2
0elem1 equivalent to elem2
> 0elem1 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.

This function validates its parameters. If compare or number is NULL, or if base is NULL and number is nonzero, or if width is less than zero, the invalid parameter handler is invoked, as described in Parameter validation. If execution is allowed to continue, the function returns, and errno is set to EINVAL.

By default, this function's global state is scoped to the application. To change this behavior, see Global state in the CRT.

Requirements

RoutineRequired header
qsort<stdlib.h> and <search.h>

For more compatibility information, see Compatibility.

Example

// crt_qsort.c// arguments: every good boy deserves favor/* 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>intcompare( constvoid*arg1, constvoid*arg2 ); intmain( intargc, char**argv ) { inti; /* 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" ); } intcompare( constvoid*arg1, constvoid*arg2 ) { /* Compare all of both strings: */return_stricmp( * ( char** ) arg1, * ( char** ) arg2 ); }
boy deserves every favor good 

See also

Searching and sorting
bsearch
_lsearch

close