P92.F90

Bubble sort


!
! =====> Program - P92.F90
!
      INTEGER LIST (1000)
      COMMON /COUNTS/NCOMP,NSWAP
!
!
      PRINT *, 'This is Program >> P92  - Bubble sort'
!
!     Tell program where data for  READ *  is coming from
      OPEN(UNIT=5, FILE='P92.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 BSORT1(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 BSORT1(LIST,N)
      INTEGER LIST(1)
      COMMON /COUNTS/NCOMP,NSWAP
      PRINT 23
  23  FORMAT(' SORTING'/)
      NCOMP=0
      NSWAP=0
L1:   DO
         K=0
L2:      DO I=1,N-1
            NCOMP=NCOMP+1
            IF(LIST(I) > LIST(I+1))THEN
               CALL SWAP(LIST(I),LIST(I+1))
               NSWAP=NSWAP+1
               K=1        ! A swap done
            ENDIF
         END DO L2
         PRINT 16,(LIST(KK),KK=1,N)
     16  FORMAT(20I5)
         IF(K == 0) EXIT  ! No swaps done
      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 >> P92  - 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= 42
NUMBER OF EXCHANGES= 18


Fortran-90 STOP

Come back to the previous page

Page builder: Charles Boivin

Last modified: 11/07/95