BCX Console Demonstration Program s111.bas

MACRO 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

Result:

Result not displayed for this example.