C/qsort
C/qsort
edytujdeklaracja
edytujvoid qsort ( void * tab, size_t num, size_t size, int ( * comparator ) ( const void *, const void * ) );
Plik nagłowkowy
edytujOpis działania
edytujSortowanie elementów w tablicy.
Sortuje num elementów, o rozmiarze równym size bajtów każdy, tablicy tab za pomocą funkcji porównującej comparator. Funkcja ta powinna działać w następujący sposób: jeśli wartość pierwszego parametru jest mniejsza od wartości drugiego, zwracana wartość powinna być ujemna. Jeżeli pierwszy argument jest większy od drugiego, funkcja powinna zwrócić wartość dodatnią. W przypadku kiedy obie przekazane wartości są równe funkcja powinna zwrócić wartość zerową. Najczęściej jako zwracane wartości niezerowe stosuje się liczby -1 i 1.
Przykład
edytujProgram pobierający od użytkownika określoną ilość liczb, następnie sortuje je i wyświetla
#include <stdio.h>
#include <stdlib.h>
// Porównywacz
int my_compare (const void * a, const void * b)
{
int _a = *(int*)a;
int _b = *(int*)b;
if(_a < _b) return -1;
else if(_a == _b) return 0;
else return 1;
}
int main ()
{
int i;
int ile;
int *tablica;
puts("Podaj ile bedziesz wprowadzal wartosci: ");
scanf("%d", &ile);
tablica= malloc(ile * sizeof(int) );
for (i=0; i<ile; ++i)
{
printf("Podaj %d liczbe: ", i+1);
scanf("%d", &tablica[i]);
}
puts("\n\n"); //przerwa miedzy liczbamy podanymi a liczbami wyswietlonymi
qsort(tablica, ile, sizeof(int), my_compare);
for(i=0; i<ile; ++i)
printf("%d\n", tablica[i]);
free(tablica);
return 0;
}