Algoritmo di ordinamento, Selection Sort in C.
Tra gli algoritmi di Ordinamento. Il Selection Sort è uno dei più semplici da apprendere. Ma non il più efficiente.
La complessità computazionale di questo algoritmo di ordinamento è O(n^2).
Qui di seguito l’implementazione di tale algoritmo sotto forma di funzione che riceve in entrata l’array da ordinare e il numero di elementi dell’array.
/* SELECTION SORT Ricerca il minimo nella parte di array non ancora ordinata e lo ordina. Poi prosegue con altre ricerche ripetute nella parte di array non ancora ordinata. Complessità computazionale: O(n^2) pag. 524 */ void selection_sort(int a[], int n){ //funzione tipo void, effettua modifiche permanenti e non restituisce nulla. int min = a[0], i = 0, j, p = 0; //dichiariamo il minimo dell'array uguale alla sua prima componente. while (i < n) { //scansioniamo tutto l'array for (j = i; j < n; j++){ //scansiona tutto l'array partendo da una posizione in più poichè uscendo da qua 1 elemento sarà già ordinato. if (a[j] < min) { //se l'elemento attuale è minore del minimo allora l'elemento attuale sarà il nuovo minimo min = a[j]; p = j; //memorizziamo la posizione del minimo nell'array } } scambia (&a[i],&a[p]);//uscendo dal ciclo for scambiamo di posizione l'elemento iniziale della scansione con il minimo trovato. i++;//incrementiamo i per passare a scansionare il restante array non ancora ordinato. min = a[i]; //settiamo il minimo uguale all'elemento dopo. } } |
Per qualsiasi chiarimento o dubbio commentate.
Commenti