!
! =====> 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
Page builder: Charles Boivin
Last modified: 11/07/95