P93.F90

Better bubble sort


!
! =====> Program - P93.F90
!
      INTEGER LIST (1000)
      COMMON /COUNTS/NCOMP,NSWAP
!
!
      PRINT *, 'This is Program >> P93  - Better Bubble sort'
!
!     Tell program where data for  READ *  is coming from
      OPEN(UNIT=5, FILE='P93.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 BSORT2(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 BSORT2(LIST,N)
      INTEGER LIST(1)
      COMMON /COUNTS/NCOMP,NSWAP
      PRINT 23
  23  FORMAT(/'SORTING'/)
      NCOMP=0
      NSWAP=0
      LAST=N-1
L1:   DO
         K=0
L2:      DO I=1,LAST
            NCOMP=NCOMP+1
            IF(LIST(I) > LIST(I+1))THEN
               CALL SWAP(LIST(I),LIST(I+1))
               NSWAP=NSWAP+1
               K=I  ! Remember swap location
            ENDIF
         END DO L2
         PRINT 16,(LIST(KK),KK=1,N)
  16     FORMAT(20I5)
         LAST=K
         IF(K == 0) EXIT  ! No more swaps
      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:
[FTN90 Version 1.12 Copyright (c)SALFORD SOFTWARE LTD 1992  &  ]
[                   (c)THE NUMERICAL ALGORITHMS GROUP 1991,1992]
    NO ERRORS  [FTN90]
Program entered
 This is Program >> P93  - Better Bubble sort

BEFORE SORTING

   59   72   41   16   27   17   11
  

SORTING

   59   41   16   27   17   11   72
   41   16   27   17   11   59   72
   16   27   17   11   41   59   72
   16   17   11   27   41   59   72
   16   11   17   27   41   59   72
   11   16   17   27   41   59   72
   11   16   17   27   41   59   72

AFTER SORTING

   11   16   17   27   41   59   72

NUMBER OF COMPARISONS= 27
NUMBER OF EXCHANGES= 18


Fortran-90 STOP

Come back to the previous page

Page builder: Charles Boivin

Last modified: 11/07/95