************************************************************************ * File: bubsort.for ************************************************************************ * Scopo: Modulo per l'ordinamento di un vettore, secondo l'algoritmo di * ordinamento a bolle (bubble sort) * (cfr. libro Calvanese et al. paragrafo 3.4.2) ************************************************************************ SUBROUTINE BubSort (vett, n) * Ordina il vettore vett di n elementi utilizzando l'ordinamento a bolle IMPLICIT NONE * Dichiarazioni tipo parametri formali * parametri di input INTEGER n * parametri di input-output INTEGER vett(n) * Dichiarazioni di variabili locali INTEGER i, j, temp LOGICAL scambio * Inizializzazioni di variabili DATA i/1/ * REPEAT 10 scambio = .FALSE. * analogo di un ciclo FOR ... DOWNTO del PASCAL DO 20 j = n, i+1, -1 IF (vett(j) .LT. vett(j-1)) THEN temp = vett(j) vett(j) = vett(j-1) vett(j-1) = temp scambio = .TRUE. ENDIF 20 CONTINUE * fine ciclo DO i = i+1 IF (scambio) GOTO 10 * UNTIL (.NOT. scambio) RETURN END