************************************************************************
* File: selsort.for
************************************************************************
* Scopo: Modulo per l'ordinamento di vettore, secondo l'algoritmo di
*        ordinamento per selezione del minimo (selection sort)
*        (cfr. libro Calvanese et al. paragrafo 3.4.1)
************************************************************************

      SUBROUTINE SelSort (vett, n)
* Ordina il vettore vett di n elementi utilizzando l'ordinamento per
* selezione del minimo
      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, imin, temp

      DO 10 i = 1, n-1
        imin = i
        DO 20 j = i+1, n
          IF (vett(j) .LT. vett(imin)) imin = j
 20     CONTINUE
        IF (imin .NE. i) THEN
          temp = vett(imin)
          vett(imin) = vett(i)
          vett(i) = temp
        ENDIF
 10   CONTINUE

      RETURN
      END