Przestrzenie nazw
Warianty
Działania

qsort

Z cppreference.com
< cpp‎ | algorithm

Składnia:

    #include <cstdlib>
    void qsort( void *buf, size_t n, size_t size, int (*compare)(const void*, const void *) );

Funkcja qsort dokonuje sortowania zawartości buf (n elementów, każdy o wielkości size) przy użyciu Quicksort. Funkcja compare jest używana do porównania dwóch elementów i powinna zwracać liczbę ujemną jeżeli pierwszy argument jest mniejszy od drugiego, dodatnią jeżeli pierwszy argument jest większy od drugiego lub zero, jeżeli argumenty są równe. qsort() sortuje w porządku rosnącym.

Np. poniższy fragment kodu używa qsort do posortowania tablicy liczbowej:

   int porownaj_int( const void* a, const void* b ) {  // funkcja porównująca
     int* arg1 = (int*) a;
     int* arg2 = (int*) b;
     if( *arg1 < *arg2 ) return -1;
     else if( *arg1 == *arg2 ) return 0;
     else return 1;
   }
 
   int tablica[] = { -2, 99, 0, -743, 2, 3, 4 };
   int rozmiar = 7;
 
   ...
 
   printf( "Przed sortowaniem: " );
   for( int i = 0; i < rozmiar; i++ ) {
     printf( "%d ", tablica[i] );
   }
   printf( "\n" );
 
   qsort( tablica, rozmiar, sizeof(int), porownaj_int );
 
   printf( "Po sortowaniu: " );
   for( int i = 0; i < rozmiar; i++ ) {
     printf( "%d ", tablica[i] );
   }
   printf( "\n" );

Program wyświetla następujący tekst:

   Przed sortowaniem: -2 99 0 -743 2 3 4
   Po sortowaniu: -743 -2 0 2 3 4 99