P91.F90

Interchange sort


!
! =====> Program - P91.F90
!
      INTEGER LIST (1000)
      COMMON /COUNTS/NCOMP,NSWAP
!
!
      PRINT *, 'This is Program >> P91  - Interchange sort'
!
!     Tell program where data for  READ *  is coming from
      OPEN(UNIT=5, FILE='P91.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 SORT1(LIST,N)
!
      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
!
      SUBROUTINE SORT1(LIST,N)
      INTEGER LIST(1)
      COMMON/COUNTS/NCOMP,NSWAP
      PRINT 18
  18  FORMAT(' SORTING'/)
      NCOMP=0
      NSWAP=0
L1:   DO I=1,N-1
L2:      DO J=I+1,N
            NCOMP=NCOMP+1
            IF(LIST(I).GT.LIST(J)) THEN
               CALL SWAP(LIST(I),LIST(J))
               NSWAP=NSWAP+1
            ENDIF
         END DO L2
         PRINT 16,(LIST(K),K=1,N)
  16     FORMAT(20I5)
      END DO L1
      RETURN
      END
!
      SUBROUTINE SWAP(K,L)
      M=K
      K=L
      L=M
      RETURN
      END

DATA:
7
59  72  41  16  27  17  11

OUTPUT:
Program entered
 This is Program >> P91  - Interchange sort
 BEFORE SORTING

   59   72   41   16   27   17   11
  
 SORTING

   11   72   59   41   27   17   16
   11   16   72   59   41   27   17
   11   16   17   72   59   41   27
   11   16   17   27   72   59   41
   11   16   17   27   41   72   59
   11   16   17   27   41   59   72
 AFTER SORTING

   11   16   17   27   41   59   72
 NUMBER OF COMPARISONS= 21
 NUMBER OF EXCHANGES= 18


Fortran-90 STOP

Come back to the previous page

Page builder: Charles Boivin

Last modified: 11/07/95