chap07/kadai4.f90

サンプルコードのダウンロード

 1program answer
 2  implicit none
 3
 4  integer :: i, n
 5  integer, allocatable :: x(:)
 6
 7  read(*, *) n
 8
 9  allocate(x(n))
10
11  read(*, *) x
12
13  call bsort(x)
14
15  do i = 1, n
16    write(*, *) x(i)
17  enddo
18
19  deallocate(x)
20
21  stop
22contains
23  !
24  ! バブルソート
25  !
26  subroutine bsort(array)
27    implicit none
28    integer, intent(inout) :: array(:) ! 配列にはソートされた結果が代入される
29
30    integer :: i, j, n
31
32    n = size(array)
33    do i = 1, n
34      do j = 1, n - i
35        call swapif(array(j), array(j + 1))
36      enddo
37    enddo
38
39  endsubroutine bsort
40
41  !
42  ! a, bが a > b なら交換, それ以外なら何もしない
43  !
44  subroutine swapif(a, b)
45    implicit none
46    integer, intent(inout) :: a, b
47
48    integer :: c
49
50    if(a > b) then
51      c = a
52      a = b
53      b = c
54    endif
55
56  endsubroutine swapif
57
58endprogram answer