PROGRAM P95 IMPLICIT NONE INTEGER :: LIST(1000),NCOMP,NSWAP,N,I INTERFACE SUBROUTINE SELECT(LIST,N,NCOMP,NSWAP) IMPLICIT NONE INTEGER,INTENT(IN) :: N INTEGER,INTENT(IN OUT) :: LIST(:) INTEGER,INTENT(OUT) :: NCOMP,NSWAP END SUBROUTINE SELECT END INTERFACE ! ! PRINT *, 'This is Program >> P95 - Selection sort' ! ! Tell program where data for READ * is coming from OPEN(UNIT=5, FILE='P95.DAT') ! UNIT=5 is the default input ! READ *, N READ *, (LIST(I),I=1,N) PRINT 17, 17 FORMAT(' BEFORE SORTING'/) PRINT 16, (LIST(I),I=1,N) PRINT *, ' ' ! ! SORT WITH SUBROUTINES ! CALL SELECT(LIST,N,NCOMP,NSWAP) ! PRINT 14, 14 FORMAT(' AFTER SORTING'/) PRINT 16,(LIST(I),I=1,N) 16 FORMAT(20I5) PRINT 27, NCOMP,NSWAP 27 FORMAT(' NUMBER OF COMPARISONS=',I3/ & ' NUMBER OF EXCHANGES=',I3//) STOP END PROGRAM P95 ! SUBROUTINE SELECT(LIST,N,NCOMP,NSWAP) ! IMPLICIT NONE INTEGER,INTENT(IN) :: N INTEGER,INTENT(IN OUT) :: LIST(:) INTEGER,INTENT(OUT):: NCOMP,NSWAP INTEGER :: SMALL,I,J,K,TEMP PRINT 18, 18 FORMAT(' SORTING'/) NCOMP=0 NSWAP=0 L1: DO I=1,N-1 SMALL=LIST(I) K=I L2: DO J=I+1,N NCOMP=NCOMP+1 IF(LIST(J)