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.