'
DEFINT A-Z
DECLARE SUB Sort (First, Last)
CLS
CONST NumEl = 9
DIM SHARED Array(NumEl), CStep
RANDOMIZE TIMER
PRINT "Unsorted array is:"
PRINT " 0 -";
FOR a = 0 TO NumEl
READ Array(a)
PRINT Array(a);
NEXT a
PRINT
Sort 0, NumEl
PRINT "Sorted array is:"
PRINT CStep; "-";
FOR a = 0 TO NumEl: PRINT Array(a); : NEXT a
END
DATA 23,45,89,74,51,18,87,63,36,38
'DATA 4,2,1,3,6,5
'DATA 1,2,3,4,5,6,7,8,9,10
'DATA 10,9,8,7,6,5,4,3,2,1
SUB Sort (First, Last)
i = First
j = Last
f& = First
l& = Last
m = Array((f& + l&) / 2)
DO
DO WHILE Array(i) < m
i = i + 1
LOOP
DO WHILE m < Array(j)
j = j - 1
LOOP
IF i <= j THEN
s = Array(i)
Array(i) = Array(j)
Array(j) = s
i = i + 1
j = j - 1
END IF
'CStep = CStep + 1
'PRINT CStep; "-";
'FOR a = 0 TO NumEl: PRINT Array(a); : NEXT a
'PRINT
LOOP WHILE i <= j
IF First < j THEN Sort First, j
IF i < Last THEN Sort i, Last
END SUB
'