Definition | #include <stdlib.h> void qsort(void *feld, size_t anz, size_t elgroesse, int (*vergl)(const void *, const void *);
| |||||||
Parameter | void *feld Zeiger auf das erste Element des zu sortierenden Vektors. size_t anz Anzahl der zu sortierenden Elemente. size_t elgroesse Größe eines Elementes in Bytes. int (*vergl)(const void *, const void *) Zeiger auf eine Funktion, die zwei Elemente vergleicht und eine ganze Zahl als Ergebnis liefert. Das Ergebnis wird wie folgt gedeutet:
Die Funktion hat zwei Parameter, und zwar zwei Zeiger auf den Typ der Vektorelemente. Die Funktion kann etwa wie folgt definiert sein: Beispiel 1 /*Vergleicht zwei char-Werte*/ int comp(const void *a, const void *b) { if(*((const char *)a) < *((const char *) b) ) return(-1); else if(*((const char *)a) > *((const char *) b ) ) return(1); return(0); } Beispiel 2 /*Vergleicht zwei integer-Werte*/ int compare(const void *a, const void *b) { return ( *((const int *) a) - *((const int *) b) ); } | |||||||
Hinweise | Die Reihenfolge von Vektorelementen, für die die Vergleichsfunktion Gleichheit feststellt, wird nicht verändert. | |||||||
Beispiel | Folgendes Programm sortiert eine Zahlenfeld und gibt es auf Standardausgabe aus. #include <stdio.h> #include <stdlib.h> int comp (const void *s, const void *t) { return ( *((const int *) s) - *((const int *) t) ); } int main(void) { int j; static int array[] = {4,7,2,1,54,9,2,3,1,23}; qsort (array, 10, sizeof(int), comp); for (j=0; j<10; j++) printf("%d\n", array[j]); return 0; } | |||||||
Siehe auch | bsearch |