Salve, non capisco il seguente codice, che sarebbe l'algoritmo di ordinamento bubble sort in fortran90:
es=riemp
DO
scambio=.FALSE.
DO i=1,es-1
IF(vet(i)>vet(i+1)) THEN
appo=vet(i)
vet(i)=vet(i+1)
vet(i+1)=appo
scambio=.TRUE.
END IF
END DO
es=es-1
IF(.NOT.scambio) EXIT
END DO
Quello che non capisco è l'istruzione "IF(.NOT. scambio) EXIT, dal momento che se per esempio il primo valore è < del secondo, si dovrebbe avere che la variabile logica scambio rimane posta pari a .false., come inizializzata in principio. Ebbene, se pari a .false., .not.scambio è dunque vera e quindi si dovrebbe uscire dal ciclo iniziale...cosa c'è che non quadra in quello che sto dicendo? In tal modo non si continuerebbe con l'algoritmo...Chi può aiutarmi a comprendere? Grazie, saluti :ciauz
No, ovviamente va svolto il ciclo interno e quello che ho detto sopra è na fesseria quindi :-) Ho capito che serve per uscire quando è terminato l'ordinamento, dal momento che scambio sarà pari a .false. e si esce dal ciclo iniziale una volta ordinato il vettore, dovrei aver afferrato il concetto, scusate per il post![]()