10  COM X[103,22],M[19,19],U[19,19],Q[20],V[20],P[78]
30  COM M$[60],N$[72]
40  COM N,K,N8,K8,N9,K9,Q9,Q7,Q5,Q4,Q3,Q2,Q1
45  COM I3,I4,U9,X$[20]
50  REM:12MAY74
52  REM:>MSOR
60  DIM K[450],H[450],W[16],C[16]
61  DIM A$[12],C$[12],R$[6]
610  MAT H=ZER[N]
612  MAT K=ZER[N]
614  MAT W=ZER
616  MAT C=ZER
620  I9=Q[8]
700  N0=0
710  FOR I=1 TO N
720  N0=N0+1
730  H[N0]=I
740  NEXT I
800  GOSUB 6000
900  I3=1
910  I4=K
920  GOSUB 1600
930  I3=K9
940  I4=K9+2
950  GOSUB 1600
1000  GOTO 9998
1600  FOR J=I3 TO I4
1610  N5=0
1615  FOR I=1 TO N
1620  N5=N5+1
1630  K[I]=X[H[N5],J]
1640  NEXT I
1650  N5=0
1660  FOR I=1 TO N
1670  N5=N5+1
1680  X[I,J]=K[I]
1690  NEXT I
1700  NEXT J
1710  RETURN 
6000  I=1
6001  M1=1
6003  J=N0
6005  IF I >= J THEN 6070
6010  K1=I
6011  I2=(J+I)/2
6012  T=H[I2]
6013  IF X[H[I],I9] <= X[T,I9] THEN 6020
6014  H[I2]=H[I]
6015  H[I]=T
6016  T=H[I2]
6020  L1=J
6021  IF X[H[J],I9] >= X[T,I9] THEN 6040
6022  H[I2]=H[J]
6023  H[J]=T
6024  T=H[I2]
6025  IF X[H[I],I9] <= X[T,I9] THEN 6040
6026  H[I2]=H[I]
6027  H[I]=T
6028  T=H[I2]
6029  GOTO 6040
6030  H[L1]=H[K1]
6031  H[K1]=T1
6040  L1=L1-1
6041  IF X[H[L1],I9]>X[T,I9] THEN 6040
6042  T1=H[L1]
6050  K1=K1+1
6051  IF X[H[K1],I9]<X[T,I9] THEN 6050
6052  IF K1 <= L1 THEN 6030
6053  IF (L1-I) <= (J-K1) THEN 6060
6054  W[M1]=I
6055  C[M1]=L1
6056  I=K1
6057  M1=M1+1
6058  GOTO 6080
6060  W[M1]=K1
6061  C[M1]=J
6062  J=L1
6063  M1=M1+1
6064  GOTO 6080
6070  M1=M1-1
6071  IF M1=0 THEN 6100
6072  I=W[M1]
6073  J=C[M1]
6080  IF (J-I) >= 11 THEN 6010
6082  IF I=1 THEN 6005
6083  I=I-1
6090  I=I+1
6091  IF I=J THEN 6070
6092  T=H[I+1]
6093  IF X[H[I],I9] <= X[T,I9] THEN 6090
6094  K1=I
6095  H[K1+1]=H[K1]
6096  K1=K1-1
6097  IF X[T,I9]<X[H[K1],I9] THEN 6095
6098  H[K1+1]=T
6099  GOTO 6090
6100  RETURN 
9998  CHAIN "$IDA",150
9999  END 
