Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

qsort - Datentabelle sortieren

&pagelevel(4)&pagelevel

Definition

#include <stdlib.h>

void qsort (void* base, size_t nel, size_t width, int (*compar) (const void *, const void *));

Beschreibung

Die Funktion qsort() ist eine Realisierung des Quicksort-Algorithmus. Sie sortiert eine Tabelle von Daten. Die Daten der Tabelle werden in aufsteigender Reihenfolge sortiert, entsprechend der Vergleichsfunktion. base zeigt auf das Element am Anfang der Tabelle.
nel ist die Anzahl der Elemente in der Tabelle. width spezifiziert die Größe eines jeden Elements in Byte. compar() ist der Name der vom Benutzer definierten Vergleichsfunktion, die von qsort() mit zwei Argumenten aufgerufen wird, die auf die zu vergleichenden Elemente zeigen. Diese Funktion muss eine ganze Zahl kleiner, gleich oder größer als null zurückgeben, um anzuzeigen, ob das erste Argument kleiner, gleich oder größer als das zweite ist.

Die Vergleichsfunktion kann etwa wie folgt definiert sein:

/* Programmausschnitt 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);
}
/* Programmausschnitt 2 vergleicht zwei integer-Werte */
int compare(const void *a, const void *b)
{
   return  ( *((const int *) a) - *((const int *) b) );
}

Hinweise

Die Vergleichsfunktion muss nicht jedes Byte vergleichen, und so können die Elemente zusätzlich zu den zu vergleichenden Werten beliebige Daten enthalten.

Erweiterung
Abweichend vom XPG4 wird die Reihenfolge von Vektorelementen, für die die Vergleichsfunktion Gleichheit feststellt, nicht verändert. (Ende)

Siehe auch

stdlib.h.