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 | |||||||