Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Führt eine schnelle Sortierung aus.Eine sicherere Version dieser Funktion ist verfügbar. Weitere Informationen finden Sie unter qsort_s.
void qsort(
void *base,
size_t num,
size_t width,
int (__cdecl *compare )(const void *, const void *)
);
Parameter
base
Anfang des Zielarrays.num
Arraygröße in Elementen.width
Elementgröße in Bytes.compare
Zeiger auf eine benutzerdefinierte Routine, die zwei Arrayelemente vergleicht und einen Wert zurückgibt, der die ihre Beziehung angibt.
Hinweise
Die qsort-Funktion implementiert einen Quick SORT-Algorithmus zur Sortierung der einzelnen Elemente num ein Array von width Bytes.Das Argument base ist ein Zeiger auf der Basis des zu sortierenden Arrays.qsort überschreibt dieses Array mit den sortierten Elementen verwendet.
qsort ruft die Routine compare einmal oder mehrmals während der Sortierung an und führt Zeiger auf zwei Arrayelementen bei jedem Aufruf.
compare( (void *) & elem1, (void *) & elem2 );
Die Routine vergleicht die Elemente und gibt einen der folgenden Werte zurück.
Compare-Funktions-Rückgabewert |
Beschreibung |
|---|---|
< 0 |
elem1 kleiner als elem2 |
0 |
elem1 Äquivalent zu elem2 |
> 0 |
elem1 größer als elem2 |
Das Array wird in zunehmender Reihenfolge sortiert, wie von der Vergleichsfunktion definiert.Um in absteigender Reihenfolge zu sortieren. B. ein Array, kehren Sie den Sinn größerem „als“ und „kleiner als“ in der Vergleichsfunktion.
Diese Funktion überprüft seine Parameter.Wenn compare oder numNULList oder wenn baseNULL und ist *num ungleich 0 ist, oder wenn width kleiner als null ist, wird der Ereignishandler aufgerufen, z. B. ungültige Parameter in Parametervalidierungbeschrieben.Wenn die Ausführung zulässig ist, um fortzufahren, kehrt die Funktion zurück und errno wird auf EINVALfestgelegt.
Anforderungen
Routine |
Erforderlicher Header |
|---|---|
qsort |
<stdlib.h> und <search.h> |
Um Kompatibilität zusätzlichen Informationen finden Sie unter Kompatibilität.
Beispiel
// 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>
int compare( const void *arg1, const void *arg2 );
int 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 );
}
.NET Framework-Entsprechung
System::Auflistungen::ArrayList::Sortierung