Ordinamento ingenuo di un vettore L`ordinamento è il processo che

Ordinamento ingenuo di un vettore
L’ordinamento è il processo che permette di ottenere, a partire da un insieme di dati omogenei
confrontabili (interi o float), un insieme ordinato secondo un ordine crescente o decrescente.
Il più intuitivo e semplice metodo è quello per selezione, detto anche metodo ingenuo, che consiste
nel confrontare ciascun elemento con tutti quelli di indice superiore, scambiandone il contenuto
quando si verifica che il valore dell’elemento preso in considerazione risulta maggiore di quello con
cui viene confrontato ( nel caso di ordinamento crescente).
Vediamo l’algoritmo ingenuo come funziona:
Supponiamo di avere il vettore di interi V con elementi {25,10,19,4}
Confrontiamo il contenuto della prima cella con tutte le successive: poiché 25 è maggiore di 10
effettuiamo lo scambio ed otteniamo {10,25,19,4} poi si prosegue confrontando sempre la prima
cella con la terza contenente 19, poiché 10 non è maggiore di 19 non effettuiamo lo scambio e
proseguiamo al confronto della prima cella con la quarta, stavolta effettuiamo lo scambio
ottenendo{4,25,19,10}. Dopo questo ciclo di confronti e scambi abbiamo il termine di valore
minimo nella prima cella.
Confrontiamo adesso la seconda cella con tutte le successive: poiché 25 è maggiore di 19 si fa lo
scambio ottenendo {4,19,25,10} e si prosegue con il confronto della seconda cella con la quarta ed
effettuando lo scambio arrivando al vettore {4,10,25,19}.
Infine si confronta la terza con la quarta cella e si effettua lo scambio arrivando alla soluzione
{4,10,19,25}
Ci si rende facilmente conto che questo algoritmo funziona anche per vettori di dimensione più
grande. Scriviamo adesso il codice:
int V[]={25,10,19,4};
//dichiarazione ed inizializzazione
int temp, dim=4;
for(int i=0; i< dim-1; i++)
//ciclo esterno
{
for(int j=i+1; j< dim; j++)
//ciclo interno
{
if(V[i]>V[j])
//confronto
{
temp=V[i];
V[i]=V[j];
V[j]=temp;
}
}
}
Osserviamo quanti confronti effettua l’algoritmo: per i=0 si effettuano (dim-1) confronti
:
(j=1,j=2,j=3) per i=1 i confronti sono (dim-2) (j=2, j=3) e per i=2 un solo confronto (j=3). In totale i
confronti sono (dim-1) +(dim–2) + …..+2+1 . Per dim=4 di questo esempio si hanno 6 confronti.
In generale i confronti risultano dalla formula dim *(dim-1)/2. Vedremo che altri algoritmi di
ordinamento richiederanno un numero inferiore di confronti.