Programmiersprache C/C++

Sortierung

Sortieren eines Arrays mit dem QuickSort-Algorithmus (ANSI-C).
  #include <stdlib.h>

  void qsort( void *base, size_t num, size_t width, 
              int( *compare ) ( const void *elem1, const void *elem2 ) );
base zeigt auf das erste Element des Arrays.
num und width geben die Anzahl der Array-Elemente bzw. die Größe eines einzelnen Elements (in Bytes) an.
compare ist eine vom Programmierer zu erstellte Funktion, deren Prototyp so aussehen muß:
  int compare(const (void *) elem1, const (void *) elem2 );
Diese Routine sollte die als elem1 und elem2 übergebenen Elemente miteinander vergleichen und eines der folgenden Ergebnisse liefern:
  Wert	Bedeutung
  < 0   elem1 < elem2
  = 0   elem1 == elem2
  > 0   elem1 > elem2
Die Art und Weise des Vergleichs ist nicht vorgeschrieben.
Es kann mit Array-Elementen beliebiger Größe und Komplexität gearbeitet werden.

Beispiel:
Sortierung der Kommandozeilen-Parameter in alphanumerischer Reihenfolge

  #include <stdio.h>
  #include <stdlib.h>
  #include <string.h>

  int compare(const void *arg1, const void *arg2 )
  {
    /* Vergleich der beiden Zeichenketten */
    return strcmp( * ( char** ) arg1, * ( char** ) arg2 );
  }

  int main( int argc, char **argv )
  {
    int i;

    /* Programmnamen (argv[0]) entfernen */
    argv++;   argc--;

    /* Aufrufparameter mittels qsort() sortieren */
    qsort( (void *)argv, (size_t)argc, sizeof( char * ), compare );

    /* Ausgabe der sortierten Liste */
    for( i = 0; i < argc; i++ )
      printf("%s ", argv[i]);
    printf("\n");

    return 0;
  }

Zurück zum Menü
Zurück zur vorigen Seite Weiter zur nächsten Seite

P. Böhme, 21.01.1996