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 (9 anni fa)] – creata Susanna Pelagatti | fisica:informatica:201617:esercitazione13 [05/05/2017 alle 13:52 (9 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 (9 anni fa) da Susanna Pelagatti
