cpp/algorithm/qsort: Różnice pomiędzy wersjami
Z cppreference.com
m (zamienił w treści „<code terminal>” na „<syntaxhighlight lang="text">”) |
m (r2.7.3) (Robot dodał en, fr, ja, zh) |
||
Linia 46: | Linia 46: | ||
Po sortowaniu: -743 -2 0 2 3 4 99 | Po sortowaniu: -743 -2 0 2 3 4 99 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ |
Wersja z 11:52, 4 maj 2012
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