Dunque misuratoreArray rappresenta il numero di elementi dell'array, questo significa che gli elementi occupano le posizioni che vanno da 0 a misuratoreArray - 1; ora quello che l'algorimto fa in un generico passo è confrontare l'elemento corrente di posizione 'i' con quello successivo di posizione 'i+1':
if( a[ i ] > a[ i + 1 ] )
Questo significa che l'indice 'i' deve fermarsi sul penultimo elemento che sara confrontato con l'utlmo a [i + 1]; ora abbiamo detto che l'ultima posizione è misuratoreArray -1, la penultima posizione è quindi misuratoreArray - 2, quindi 'i' deve essere minore di misuratoreArray - 1.
Il ciclo interno sposta un elemento verso il fondo dell'array. In particolare, dopo che il for interno è stato eseguito per la prima volta, in fondo all'array l'elemento maggiore di tutti; con la seconda iterazione il secondo elemento piu grande sarà finito in penultima posizione; con la terza iterazione il terzo elemento piu grande sarà nella terzultima posizione e cosi via fino a completare l'array eseguendo tante iterazioni quante sono glielementi: ecco il motivo dei fue for annidati. Date queste considerazioni, il ciclo interno potrebbe fermarsi prima anzicchè andare ad esaminare anche le ultime posizioni che sono state gia ordinate, comuque questa è un'ottimizzazione e l'algoritmo funziona lo stesso.
![]()

Rispondi quotando