]> git.uio.no Git - u/mrichter/AliRoot.git/blame - MINICERN/packlib/kernlib/kerngen/tcgen/intsor.F
Bugfix in AliPoints2Memory
[u/mrichter/AliRoot.git] / MINICERN / packlib / kernlib / kerngen / tcgen / intsor.F
CommitLineData
fe4da5cc 1*
2* $Id$
3*
4* $Log$
5* Revision 1.1.1.1 1996/02/15 17:49:48 mclareni
6* Kernlib
7*
8*
9#include "kerngen/pilot.h"
10 SUBROUTINE INTSOR(A,N)
11C
12C CERN PROGLIB# M103 INTSOR .VERSION KERNFOR 3.15 820113
13C ORIG. 29/04/78
14C
15C SORT THE ONE-DIMENSIONAL INTEGER ARRAY A(1),...,A(N) BY
16C INCREASING VALUES
17C
18C- PROGRAM M103 TAKEN FROM CERN PROGRAM LIBRARY, 29-APR-78
19C
20 INTEGER A(N),X,W
21 COMMON /SLATE/ LT(20),RT(20)
22 INTEGER R,RT
23C
24 LEVEL=1
25 LT(1)=1
26 RT(1)=N
27 10 L=LT(LEVEL)
28 R=RT(LEVEL)
29 LEVEL=LEVEL-1
30 20 IF(R.GT.L) GO TO 200
31 IF(LEVEL) 50,50,10
32C
33C SUBDIVIDE THE INTERVAL L,R
34C L : LOWER LIMIT OF THE INTERVAL (INPUT)
35C R : UPPER LIMIT OF THE INTERVAL (INPUT)
36C J : UPPER LIMIT OF LOWER SUB-INTERVAL (OUTPUT)
37C I : LOWER LIMIT OF UPPER SUB-INTERVAL (OUTPUT)
38C
39 200 I=L
40 J=R
41 M=(L+R)/2
42 X=A(M)
43 220 IF(A(I).GE.X) GO TO 230
44 I=I+1
45 GO TO 220
46 230 IF(A(J).LE.X) GO TO 231
47 J=J-1
48 GO TO 230
49C
50 231 IF(I.GT.J) GO TO 232
51 W=A(I)
52 A(I)=A(J)
53 A(J)=W
54 I=I+1
55 J=J-1
56 IF(I.LE.J) GO TO 220
57C
58 232 LEVEL=LEVEL+1
59 IF((R-I).GE.(J-L)) GO TO 30
60 LT(LEVEL)=L
61 RT(LEVEL)=J
62 L=I
63 GO TO 20
64 30 LT(LEVEL)=I
65 RT(LEVEL)=R
66 R=J
67 GO TO 20
68 50 RETURN
69 END