Shell sort (Fortran95)
From LiteratePrograms
- Other implementations: C | Fortran95
This program is a code dump.
Code dumps are articles with little or no documentation or rearrangement of code. Please help to turn it into a literate program. Also make sure that the source of this code does consent to release it under the MIT or public domain license.
<<Shellsort.f95>>= MODULE sort CONTAINS SUBROUTINE Shell_Sort(a) IMPLICIT NONE INTEGER :: i, j, gap REAL :: temp REAL, INTENT(IN OUT) :: a(:) gap = SIZE(a) / 2 DO WHILE (gap>0) DO i = gap+1, SIZE(a) j = i - 1 temp = a(i) DO WHILE (j >= gap .AND. a(j-gap+1) > temp) a(j+1) = a(j-gap+1) j = j - gap END DO a(j+1) = temp END DO IF (gap == 2) THEN gap = 1 ELSE gap = gap * 5 / 11 END IF END DO END SUBROUTINE Shell_Sort END MODULE sort PROGRAM SHELLSORT USE sort IMPLICIT NONE REAL :: array(100) CALL RANDOM_SEED CALL RANDOM_NUMBER(array) WRITE (*,*) "Unsorted array" WRITE (*,*) array WRITE (*,*) CALL Shell_Sort(array) WRITE (*,*) "Sorted array" WRITE (*,*) array END PROGRAM SHELLSORT
| Download code |
