Ti ringrazione per il codice. Io però non sono arrivato ancora a quel punto e posso usare solo bubblesort. Tuttavia non riesco a usarlo sulle matriciOriginariamente inviato da MItaly
Se per matrice intendi una "vera" matrice C (e non il potenziale "jagged array" fatto con un vettore monodimensionale di puntatori a vettori), il problema non si pone, dato che lo standard garantisce che gli elementi di una matrice sono memorizzati in maniera contigua, per cui con un cast puoi "vedere" la matrice bidimensionale come matrice monodimensionale e ordinarla con un normale algoritmo di ordinamento.
In caso contrario (o nel caso in cui non ti vada bene che l'ordinamento sia per righe) puoi "linearizzare" la tua matrice scrivendo una funzione che converta l'indice lineare nelle due coordinate della tua matrice.
Supponendo ad esempio che tu abbia una matrice bidimensionale che vuoi ordinare per colonne potresti scrivere una funzione del tipo:
dove idx è l'"indice linearizzato", matrice è la matrice a cui accedere e lunghezza è la lunghezza di ogni riga; nell'algoritmo di ordinamento puoi quindi accedere agli elementi usando la funzione elemento invece di lavorare direttamente sull'array.codice:int * elemento(size_t idx) { return &matrice[idx%lunghezza][idx/lunghezza]; }

Rispondi quotando