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