      DIM BUFFER(99)
      DIM I AS INTEGER , J AS INTEGER
      DIM COUNT AS INTEGER
      !
      COUNT = 5
      PRINT "Filling array and sorting ";COUNT;" times."
      FOR I = 1 TO COUNT
        J = RND ( - 3)
        FOR J = 0 TO 99
          BUFFER(J) = RND (1)
        NEXT
        CALL QUICK(0, 99, BUFFER())
      NEXT
      PRINT "Done."
      PASS = 1
      FOR I = 0 TO 99 - 1
        IF BUFFER(I) > BUFFER(I + 1) THEN
          PASS = 0
        END IF
      NEXT
      IF PASS THEN
        PRINT "The last array is sorted properly."
      ELSE
        PRINT "The last array is NOT sorted properly!"
      END IF
      END

      SUB QUICK(LO AS INTEGER , HI AS INTEGER , BASE())
      DIM I AS INTEGER , J AS INTEGER
      DIM PIVOT, TEMP
      IF HI > LO THEN
        PIVOT = BASE(HI)
        I = LO - 1
        J = HI
        DO
          DO
            I = I + 1
          LOOP UNTIL BASE(I) >= PIVOT
          DO
            J = J - 1
          LOOP UNTIL (BASE(J) <= PIVOT) OR (J = LO)
          TEMP = BASE(I)
          BASE(I) = BASE(J)
          BASE(J) = TEMP
        LOOP UNTIL J <= I
        BASE(J) = BASE(I)
        BASE(I) = BASE(HI)
        BASE(HI) = TEMP
        CALL QUICK(LO, I - 1, BASE())
        CALL QUICK(I + 1, HI, BASE())
      END IF
      END SUB

