SURFEX v8.1
General documentation of Surfex
Surfex_Git2
src
LIB
XRD44
support
qsortc.F
Go to the documentation of this file.
1
! Sort character strings
2
SUBROUTINE
qsortc
(N,ORD,A)
3
USE
parkind1
, ONLY
:
jpim
4
! IMPLICIT INTEGER (A-Z)
5
IMPLICIT NONE
6
7
INTEGER(KIND=JPIM)
:: N
8
INTEGER(KIND=JPIM)
:: ORD(n)
9
INTEGER(KIND=JPIM)
:: I,IP,IQ,IX,IZ,L,L1,NDEEP,P
10
INTEGER(KIND=JPIM)
:: POPLST(2,20)
11
INTEGER(KIND=JPIM)
:: Q,U,U1,YP
12
13
CHARACTER(LEN=*)
:: A(n)
14
CHARACTER(LEN=LEN(A))
:: X,XX,Z,ZZ,Y
15
16
ndeep=0
17
u1=n
18
l1=1
19
DO
1 i=1,n
20
1 ord(i)=i
21
2
IF
(u1.LE.l1)
RETURN
22
23
3 l=l1
24
u=u1
25
4 p=l
26
q=u
27
28
x=a(ord(p))
29
z=a(ord(q))
30
IF
(x.LE.z)
GO TO
5
31
y=x
32
x=z
33
z=y
34
yp=ord(p)
35
ord(p)=ord(q)
36
ord(q)=yp
37
5
IF
(u-l.LE.1)
GO TO
15
38
xx=x
39
ix=p
40
zz=z
41
iz=q
42
43
6 p=p+1
44
IF
(p.GE.q)
GO TO
7
45
x=a(ord(p))
46
IF
(x.GE.xx)
GO TO
8
47
GO TO
6
48
7 p=q-1
49
GO TO
13
50
51
8 q=q-1
52
IF
(q.LE.p)
GO TO
9
53
z=a(ord(q))
54
IF
(z.LE.zz)
GO TO
10
55
GO TO
8
56
9 q=p
57
p=p-1
58
z=x
59
x=a(ord(p))
60
61
10
IF
(x.LE.z)
GO TO
11
62
y=x
63
x=z
64
z=y
65
ip=ord(p)
66
ord(p)=ord(q)
67
ord(q)=ip
68
11
IF
(x.LE.xx)
GO TO
12
69
xx=x
70
ix=p
71
12
IF
(z.GE.zz)
GO TO
6
72
zz=z
73
iz=q
74
GO TO
6
75
76
13
CONTINUE
77
IF
(.NOT.(p.NE.ix.AND.x.NE.xx))
GO TO
14
78
ip=ord(p)
79
ord(p)=ord(ix)
80
ord(ix)=ip
81
14
CONTINUE
82
IF
(.NOT.(q.NE.iz.AND.z.NE.zz))
GO TO
15
83
iq=ord(q)
84
ord(q)=ord(iz)
85
ord(iz)=iq
86
15
CONTINUE
87
IF
(u-q.LE.p-l)
GO TO
16
88
l1=l
89
u1=p-1
90
l=q+1
91
GO TO
17
92
16 u1=u
93
l1=q+1
94
u=p-1
95
17
CONTINUE
96
IF
(u1.LE.l1)
GO TO
18
97
98
ndeep=ndeep+1
99
poplst(1,ndeep)=u
100
poplst(2,ndeep)=l
101
GO TO
3
102
18
IF
(u.GT.l)
GO TO
4
103
104
IF
(ndeep.EQ.0)
GO TO
2
105
u=poplst(1,ndeep)
106
l=poplst(2,ndeep)
107
ndeep=ndeep-1
108
GO TO
18
109
110
ENDSUBROUTINE
qsortc
parkind1::jpim
integer, parameter jpim
Definition:
parkind1.F90:13
qsortc
subroutine qsortc(N, ORD, A)
Definition:
qsortc.F:3
parkind1
Definition:
parkind1.F90:1
Generated on Tue Jan 16 2018 16:23:22 for SURFEX v8.1 by
1.8.13