C ++ qsort () - C ++ Standardbibliotek

Funksjonen qsort () i C ++ sorterer en gitt matrise i stigende rekkefølge ved hjelp av Quicksort-algoritmen.

Funksjonen qsort () bruker en sammenligningsfunksjon for å bestemme hvilket element som er mindre / større enn det andre.

qsort () prototype

 ugyldig qsort (ugyldig * base, størrelse_t num, størrelse_t størrelse, int (* sammenligne) (const ugyldig *, const ugyldig *));

Funksjonen er definert i topptekstfilen.

Funksjonen qsort () sorterer den gitte matrisen pekt etter base i stigende rekkefølge. Matrisen inneholder numelementer, hver med størrelsesbyte.

Funksjonen som sammenlignes brukes til å sammenligne to elementer i matrisen. Denne funksjonen endrer innholdet i selve matrisen i stigende rekkefølge.

Imidlertid, hvis to eller flere elementer er like, er rekkefølgen udefinert.

qsort () Parametere

  • base: peker til det første elementet i matrisen som skal sorteres
  • num: Antall elementer i matrisen
  • størrelse: Størrelse i byte for hvert element i matrisen
  • sammenligne: En peker til en funksjon som sammenligner to elementer. Det kommer tilbake
    • et negativt heltall hvis det første argumentet er mindre enn det andre
    • et positivt heltall hvis det første argumentet er større enn det andre
    • null hvis begge argumentene er like

Prototypen til sammenligningsfunksjonen ser ut som:

 int sammenligne (const void * a, const void * b);

qsort () Returverdi

Funksjonen qsort () returnerer ikke noe. Den sorterte matrisen pekes på med base.

Eksempel: Hvordan fungerer qsort () -funksjonen?

 #include #include using namespace std; int compare(const void* a, const void* b) ( const int* x = (int*) a; const int* y = (int*) b; if (*x> *y) return 1; else if (*x < *y) return -1; return 0; ) int main() ( const int num = 10; int arr(num) = (9,4,19,2,7,9,5,15,23,3); cout << "Before sorting" << endl; for (int i=0; i 

When you run the program, the output will be:

 Before sorting 9 4 19 2 7 9 5 15 23 3 After sorting 2 3 4 5 7 9 9 15 19 23

Interessante artikler...