Monday, 30 April 2012

Shell Sort in Liberty BASIC


Max = 5
REDIM Arr(Max)
FOR I = 1 TO Max
  Arr(I) = INT(RND(1) * 100) + 1
  PRINT Arr(I); SPACE$(1);
NEXT I
PRINT "(Initial array)"

X = INT(Max / 2)
WHILE X > 0
  Time = 0
  Limit = Max - X
  WHILE (Time = 0)
    Switch = 0
    FOR K = 1 TO Limit
      IF Arr(K) > Arr(K + X) THEN
        TempX = Arr(K)
        Arr(K) = Arr(K + X)
        Arr(K + X) = TempX
        Switch = K
      END IF
    NEXT K
    Limit = Switch - X
    IF Switch = 0 THEN
      Time = 1
    END IF
  WEND

  FOR I = 1 TO Max
    PRINT Arr(I); SPACE$(1);
  NEXT I
  PRINT
  X = INT(X / 2)
WEND

FOR I = 1 TO Max
  PRINT Arr(I); SPACE$(1);
NEXT I
PRINT "(Sorted array)"
END

No comments:

Post a Comment