Ciao a tutti,
mi consigliate un algoritmo semplice ed elegante per ordinare un array?anzi, piu precisamente, viene inserito un valore e se c'è spazio lo inserisce nella giusta posizione spostando gli altri elementi. thk.
Ciao a tutti,
mi consigliate un algoritmo semplice ed elegante per ordinare un array?anzi, piu precisamente, viene inserito un valore e se c'è spazio lo inserisce nella giusta posizione spostando gli altri elementi. thk.
Gli algoritmi di ordinamento non sono "black magic", vengono descritti in qualsiasi testo sulle strutture dati, ad esempio nel Sedgewick e su un numero spropositato di pagine Web. Capisco che chiedere su un forum sia più comodo, ma un pizzico di impegno non guasta mai...
Senza considerare che la libreria standard del C ti offre la funzione qsort.
codice:/* qsort example */ #include <stdio.h> #include <stdlib.h> int values[] = { 40, 10, 100, 90, 20, 25 }; int compare (const void * a, const void * b) { return ( *(int*)a - *(int*)b ); } int main () { int n; qsort (values, 6, sizeof(int), compare); for (n=0; n<6; n++) printf ("%d ",values[n]); return 0; }
"Se riesci a passare un pomeriggio assolutamente inutile in modo assolutamente inutile, hai imparato a vivere."
grazie ma non mi piace cosi, perchè a me serve che il valore lo metta subito nel posto giusto, non che mette e poi ordina. I valori per essere spostati, come si fa? con una serie di scambi? mah...
Gli algoritmi di ordinamento più comuni sono riassunti in queste slide.
Nel tuo caso, se il vettore è inizialmente vuoto, è sufficiente determinare la posizione in cui inserire l'elemento con dei confronti e procedere ad eventuali scambi.
"Se riesci a passare un pomeriggio assolutamente inutile in modo assolutamente inutile, hai imparato a vivere."