Implementazioni di algoritmi/Selection sort: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
mNessun oggetto della modifica
Riga 13:
=== [[Linguaggio C|C]] ===
<nowiki>
void selection(void) {
int i, j, min, t;
 
Riga 69:
 
== Analisi delle prestazioni ==
Il ciclo interno è un semplice test per confrontare l'elemento corrente con il minimo elemento trovato fino a quel momento (più il codice per incrementare l'indice dell'elemento corrente e per verificare che esso non ecceda i limiti dell'array). Lo spostamento degli elementoelementi è fuori dal ciclo interno: ogni scambio pone un elemento nella sua posizione finale quindi il numero di scambi è pari a <math> N-1</math> (dato che l'ultimo elemento non deve essere scambiato). Il tempo di calcolo pè determinato dal numero di confronti.
 
L'ordinamento per selezione effettua circa <math>N^2/2</math> confronti ed <math>N</math> scambi.
Riga 77:
 
== Casi limite ==
Un' inconveniente dell'algoritmo di ordinamento per selezione è che il tempo di esecuzione dipende solo in modo modesto dal grado di ordinamento in cui si trova il file. La ricerca del minimo elemento durante una scansione del file non sembra deredare informazioni circa la posizione del prossimo minimo nella scansione successiva. Chi utilizza questo algoritmo potrebbe stupirsi nel verificare che esso impiega piàpiù o meno lo stesso tempo sia su file già ordinati che su file con tutte le hiavichiavi uguali, o anche su file ordinati in modo casuale.
 
Nonostante l'approccio ''brutale'' adottato, ordinamento per selezione ha un'importante applicazione: poichè ciascun elemento viene spostato al piàpiù una volta, questo tipo di ordinamento è il metodo da preferire quando si devono ordinare file costituiti da record estremamente grandi e da chiavi molto piccole. Per queste applicazioni il costo dello spostamento dei dati è prevalente sul costo dei confronti e nessun algoritmo è in grado di ordinare un file con spostamenti di dati sostanzialmente inferiori a quelli dell'ordinamento per selezione.