BCX Console Demonstration Program s111.bas
|
CONST Maxx = 1000001
GLOBAL A[Maxx] AS INTEGER
GLOBAL B AS INTEGER
GLOBAL I AS INTEGER
GLOBAL J AS INTEGER
GLOBAL L AS INTEGER
GLOBAL M AS INTEGER
GLOBAL N AS INTEGER
CLS
COLOR 2,0
PRINT "***********************************************************************"
PRINT " A Shell-Metzner Integer Sort Example For BCX"
PRINT " Derived from a program by Judson McClendon"
PRINT " based on original work by Donald Knuth"
PRINT "***********************************************************************"
PRINT "Sorting 1 million Integers takes about 15 seconds on my 300 mhz Pentium"
PRINT "***********************************************************************"
PRINT
N = 1000000
PRINT TIME$, ": Storing 1 million random integers"
FOR I = 1 TO N
A[I] = RND * Maxx ' Store random integers
NEXT
COLOR 4,0
PRINT TIME$, ": Starting The Sort"
CALL Sort
PRINT TIME$, ": Sorting Complete!"
SUB Sort
M = 3280
WHILE M
FOR J = 1 TO N - M
L = J + M
B = A[L]
FOR I = J TO 1 STEP -M
IF A[I] > B THEN
A[I + M] = A[I]
L = I
ELSE
I = 1
END IF
NEXT
A[L] = B
NEXT
M = (M - 1) / 3
WEND
END SUB