Ecco:
La funzione qsort è stata sviluppata per ordinare array con l'algoritmo "quick-sort". Per come è stata implementata:codice:int qsort_cmp_func (const void *s1, const void *s2) { return strcmp ((char*) s1, (char*) s2); } int main (void) { char m[10][10]= { "pippo", "cicci", "paperino" }; int i; qsort (m, 3, 10, qsort_cmp_func); for (i=0; i<3; i++) printf ("%s\n", m[i]); return 0; }
A) Non sa a priori su quale tipo di dato dovrà operare
B) Non sa a priori su quanti elementi dovrà operare
C) Non sa a priori la dimensione di un singolo elemento
Tutti questi dati infatti vengono forniti alla funzione qsort. L'unica cosa che "sa" è questa: in base all'algoritmo quick-sort dovrà chiamare ogni volta la funzione di comparazione e in base al risultato di questa comparazione, dovrà scambiare (oppure no) i 2 elementi.
Nel caso sopra, deve quindi sapere che ogni elemento è lungo 10 byte!!

Rispondi quotando