! ! =====> 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