Sorting algorithms/Bubble sort: Difference between revisions

Content added Content deleted
m (→‎{{header|Smalltalk}}: Changed to wp link)
m (→‎{{header|Fortran}}: code tweaks)
Line 317: Line 317:
REAL, INTENT(in out), DIMENSION(:) :: a
REAL, INTENT(in out), DIMENSION(:) :: a
REAL :: temp
REAL :: temp
INTEGER :: i, last
INTEGER :: i, j
LOGICAL :: swapped = .TRUE.
LOGICAL :: swapped = .TRUE.
last = SIZE(a)
DO j = SIZE(a)-1, 1, -1
DO WHILE (swapped .OR. last == 1)
swapped = .FALSE.
last = last -1
DO i = 1, j
swapped = .FALSE.
IF (a(i) > a(i+1)) THEN
DO i = 1, last
temp = a(i)
IF (a(i) > a(i+1)) THEN
a(i) = a(i+1)
temp = a(i)
a(i+1) = temp
a(i) = a(i+1)
swapped = .TRUE.
a(i+1) = temp
END IF
END DO
swapped = .TRUE.
END IF
IF (.NOT. swapped) EXIT
END DO
END DO
END DO
END SUBROUTINE Bubble_Sort
END SUBROUTINE Bubble_Sort