25 lines
610 B
Text
25 lines
610 B
Text
100 REMMEDIAN
|
|
110 K = INT(L/2) : GOSUB 150
|
|
120 R = X(K)
|
|
130 IF L - 2 * INT (L / 2) THEN R = (R + X(K + 1)) / 2
|
|
140 RETURN
|
|
|
|
150 REMQUICK SELECT
|
|
160 LT = 0:RT = L - 1
|
|
170 FOR J = LT TO RT STEP 0
|
|
180 PT = X(K)
|
|
190 P1 = K:P2 = RT: GOSUB 300
|
|
200 P = LT
|
|
210 FOR I = P TO RT - 1
|
|
220 IF X(I) < PT THEN P1 = I:P2 = P: GOSUB 300:P = P + 1
|
|
230 NEXT I
|
|
240 P1 = RT:P2 = P: GOSUB 300
|
|
250 IF P = K THEN RETURN
|
|
260 IF P < K THEN LT = P + 1
|
|
270 IF P > = K THEN RT = P - 1
|
|
280 NEXT J
|
|
290 RETURN
|
|
|
|
300 REMSWAP
|
|
310 H = X(P1):X(P1) = X(P2)
|
|
320 X(P2) = H: RETURN
|