Unità G3 Algoritmi notevoli
Ordinamento Un insieme di dati {a0, a1, a2, …, an} si dice ordinato in ordine crescente se a0 a1 a2 a3 … an I dati sono generalmente memorizzati in vettori.
Metodo di selezione diretta Lalgoritmo ricerca lelemento minore della regione del vettore da ordinare e lo sposta allinizio della regione stessa. Ad ogni scansione viene spostato un elemento del vettore nella posizione corretta. Lordinamento ha termine quando la regione considerata è costituita da un solo elemento.
Un esempio Array di partenza Scansione 1 Scansione 2 Scansione 3 Scansione 4 Scansione 5 Scansione 6 Scansione 7 Scansione 8 Scansione 9
for (int s = 0; s < n - 1; s++) { // n-1 scansioni (n è la dimensione dellarray) // la posizione dellelemento minore è inizialmente // la prima della regione da analizzare int posizMin = s; for (int i = s + 1; i < n; i++) { // ricerca la posizione dellelemento minore // fra quelli presenti nella regione if (v[i] < v[posizMin]) posizMin = i; } // scambio il primo elemento della sezione // con il minore // appoggio è una variabile dello stesso tipo // degli elementi dellarray appoggio = v[s]; v[s] = v[posizMin]; v[posizMin] = appoggio; }
for (int s = 0; s < n - 1; s++) { // n-1 scansioni (n è la dimensione dellarray) for (int i = s + 1; i < n; i++) { // scambio di posizione fra il primo elemento // della sequenza e un elemento con valore minore if (v[i] < v[s]) { float appoggio = v[s]; v[s] = v[i]; v[i] = appoggio; } } // fine ciclo interno } // il vettore è ordinato