qsort ()- Sortierarray
Format
#include <stdlib.h>
void qsort(void *base, size_t num, size_t width,
int(*compare)(const void *key, const void *element));Sprachniveau
ANSI
Sicher für Threads
Ja
Beschreibung
Die Funktion qsort() sortiert ein Array von num Elementen mit einer Größe von jeweils width Byte. Der Basiszeiger ist ein Zeiger auf das zu sortierende Array. Die Funktion qsort() überschreibt dieses Array mit den sortierten Elementen.
Das Argument compare ist ein Zeiger auf eine Funktion, die Sie angeben müssen, die einen Zeiger auf das Argument key und auf ein Array elementin dieser Reihenfolge verwendet. Die Funktion qsort() ruft diese Funktion während der Suche mindestens einmal auf. Die Funktion muss den Schlüssel und das -Element vergleichen und einen der folgenden Werte zurückgeben:
| Wert | Bedeutung |
|---|---|
| Kleiner als 0 | Schlüssel kleiner als Element |
| 0 | Schlüssel gleich Element |
| größer als 0 | key greater than Element |
Die sortierten Array-Elemente werden in aufsteigender Reihenfolge gespeichert, wie durch Ihre Funktion compare definiert. Sie können in umgekehrter Reihenfolge sortieren, indem Sie den Sinn für "größer als" und "kleiner als" in vergleichenumkehren. Die Reihenfolge der Elemente ist nicht angegeben, wenn zwei Elemente gleich verglichen werden.
Rückgabewert
Es gibt keinen Rückgabewert.
Beispiel
compare() verwendet wird.#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/* Declaration of compare() as a function */
int compare(const void *, const void *);
int main (int argc, char *argv[ ])
{
int i;
argv++;
argc--;
qsort((char *)argv, argc, sizeof(char *), compare);
for (i = 0; i < argc; ++i)
printf("%s\n", argv[i]);
return 0;
}
int compare (const void *arg1, const void *arg2)
{
/* Compare all of both strings */
return(strcmp(*(char **)arg1, *(char **)arg2));
}
/*********** If the program is passed the arguments: ************
******** 'Does' 'this' 'really' 'sort' 'the' 'arguments' 'correctly?'****
**************** then the expected output is: *******************
arguments
correctly?
really
sort
the
this
Does
*/