fisica:informatica:201617:esercitazione13
Differenze
Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.
Prossima revisione | Revisione precedente | ||
fisica:informatica:201617:esercitazione13 [05/05/2017 alle 13:25 (8 anni fa)] – creata Susanna Pelagatti | fisica:informatica:201617:esercitazione13 [05/05/2017 alle 13:52 (8 anni fa)] (versione attuale) – [Esercizio 3: (avanzato) Usare il ''qsort()'' della libreria standard C] Susanna Pelagatti | ||
---|---|---|---|
Linea 12: | Linea 12: | ||
===== Esercizio 3: (avanzato) Usare il '' | ===== Esercizio 3: (avanzato) Usare il '' | ||
- | La libreria standard C mette a disposizione una implementazione dell' | + | La libreria standard C mette a disposizione una implementazione dell' |
< | < | ||
+ | void qsort (void* buf, size_t num, size_t size, int (*compare) (const void*, const void*)) | ||
+ | </ | ||
+ | dove '' | ||
+ | Una funzione '' | ||
+ | < | ||
+ | int compare (const void * x, const void * y); | ||
+ | </ | ||
+ | e deve confrontare '' | ||
+ | * negativo -> se *x < *y | ||
+ | * 0 -> se *x == *y | ||
+ | * positivo -> se *x > *y | ||
+ | La parola chiave '' | ||
+ | |||
+ | Ad esempio se sto lavorando con valori interi posso definire la funzione di confronto come: | ||
+ | < | ||
+ | int confronta_int (const void* x, const void* y) { | ||
+ | int a = * (int *) x; | ||
+ | int b = * (int *) y; | ||
+ | | ||
+ | } | ||
+ | #define N 6 | ||
+ | int main(void){ | ||
+ | int values[N] = {10, 21, 1 , 7 , 24 , 9}; | ||
+ | qsort(values, | ||
+ | ..... | ||
</ | </ | ||
+ | oppure per le stringhe | ||
+ | < | ||
+ | int confronta_string (const void* x, const void* y) { | ||
+ | char* a = * (char* *) x; | ||
+ | char* b = * (char* *) y; | ||
+ | | ||
+ | } | ||
+ | |||
+ | #define N 10 | ||
+ | int main(void){ | ||
+ | int i; | ||
+ | |||
+ | char ** values = malloc(N*sizeof(char *)); | ||
+ | |||
+ | for(i=0; i < n; i++) { | ||
+ | | ||
+ | | ||
+ | } | ||
+ | |||
+ | qsort(values, | ||
+ | ... | ||
+ | </ | ||
+ | |||
+ | Utilizzare il '' | ||
+ | Confrontare i tempi ottenti con quelli ottenuti le funzioni implementate nell' |
fisica/informatica/201617/esercitazione13.1493990725.txt.gz · Ultima modifica: 05/05/2017 alle 13:25 (8 anni fa) da Susanna Pelagatti