home *** CD-ROM | disk | FTP | other *** search
/ Media Share 9 / MEDIASHARE_09.ISO / progmisc / euphor10.zip / SHELL.BAS < prev    next >
BASIC Source File  |  1993-05-07  |  1KB  |  63 lines

  1. DECLARE SUB sort ()
  2. DEFINT A-Z
  3.  
  4. CONST ITERATIONS = 1000
  5. CONST NITEMS = 50
  6. DIM SHARED xlist(NITEMS), slist(NITEMS)
  7.  
  8. DATA 9, 34, 14, 18, 33, 46, 11, 13, 7, 26, 22, 10, 36, 40, 2, 28, 32, 1
  9. DATA 23, 31, 43, 5, 24, 42, 45, 50, 16, 3, 47, 39, 21, 49, 41, 6, 19, 30
  10. DATA 20, 35, 44, 38, 25, 15, 27, 17, 8, 4, 29, 37, 48, 12
  11.  
  12. FOR i = 1 TO NITEMS
  13.     READ xlist(i)
  14. NEXT i
  15.  
  16. x! = TIMER
  17.  
  18. FOR t! = 1 TO ITERATIONS
  19.     REM preserve the original array
  20.     FOR x = 1 TO NITEMS
  21.     slist(x) = xlist(x)
  22.     NEXT x
  23.     sort
  24. NEXT t!
  25.  
  26. PRINT ITERATIONS;" ITERATIONS IN ";TIMER - x!; " SECONDS"
  27.  
  28. FOR i = 1 TO NITEMS
  29.     PRINT slist(i),
  30. NEXT i
  31.  
  32. SUB sort
  33. REM put slist into ascending order
  34. REM using an insertion sort
  35.     
  36.     gap = INT(NITEMS / 4) + 1
  37.     DO
  38.     FOR i = gap + 1 TO NITEMS
  39.         tempi = slist(i)
  40.         j = i - gap
  41.         DO
  42.         tempj = slist(j)
  43.         IF tempi >= tempj THEN
  44.             j = j + gap
  45.             EXIT DO
  46.         END IF
  47.         slist(j + gap) = tempj
  48.         IF j <= gap THEN
  49.             EXIT DO
  50.         END IF
  51.         j = j - gap
  52.         LOOP
  53.         slist(j) = tempi
  54.     NEXT i
  55.     IF gap = 1 THEN
  56.         EXIT SUB
  57.     ELSE
  58.         gap = INT(gap / 4) + 1
  59.     END IF
  60.     LOOP
  61. END SUB
  62.  
  63.