PDA

Visualizza la versione completa : [FORTRAN 90] Bubble sort


stino90
13-01-2012, 12:49
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 :ciauz:

oregon
13-01-2012, 12:55
Tra

scambio=.FALSE.

e

IF(.NOT.scambio) EXIT

c' un intero ciclo DO..ENDDO

Se durante quel ciclo avviene uno scambio, allora avrai scambio=.TRUE., altrimenti vuol dire che il vettore ordinato e non c' pi bisogno di continuare l'esecuzione del programma.

stino90
15-01-2012, 17:43
Grazie per la risposta, avevo comunque editato accorgendomi dell'errore ;-) :ciauz:

oregon
15-01-2012, 17:46
Beh ... evita di editare il post iniziale perch non viene riletto ... in futuro inserisci un nuovo post nella discussione in modo che si possa seguire il senso della discussione in modo naturale ...

stino90
15-01-2012, 18:39
ok ;-)

Loading