home *** CD-ROM | disk | FTP | other *** search
/ World of Shareware - Software Farm 2 / wosw_2.zip / wosw_2 / QBAS / BAS_SORT.ZIP / RIPLSORT.BAS < prev    next >
BASIC Source File  |  1989-07-20  |  26KB  |  450 lines

  1. ' ******************************************
  2. ' ** Name:     RIPLSORT.BAS               **
  3. ' ** Type:     Main Module                **
  4. ' ** Language  Microsoft QuickBASIC 4.00  **
  5. ' ** Author:   Mike Welch:  Dallas, TX    **
  6. ' ** Comments: The main module here is    **
  7. ' **           provided simply to be used **
  8. ' **           as an example sort.        **
  9. ' ******************************************
  10.  
  11. DECLARE SUB RiplSort (Ar$(), Elements%)           ' this is the actual sort
  12. DIM SHARED Ar$(0 TO 1000)                         ' dimension sort array
  13. CLS                                               ' clear screen
  14. PRINT "   *----------------------- Ripple Sort Test Run ------------------------*"
  15. PRINT
  16. PRINT "    - A modification of Richard F. Ashwell III's Mentat sort algorithim."
  17. PRINT
  18. PRINT "   You have 1 option in this test run.  You may have the output go to any"
  19. PRINT "   of three devices; a disk file (any name), LPT1: (printer), or SCRN:,"
  20. PRINT "   (the screen).  Note that if you want LPT1: or SCRN: you MUST include"
  21. PRINT "   the colon [:] or an error message will occur."
  22. PRINT
  23. PRINT "   So, what'll it be? ([filename], [SCRN:], or [LPT1:]): ";
  24. INPUT Device$                                     ' get output device
  25. IF Device$ = "" THEN                              ' if user pressed ENTER
  26.      BEEP                                         ' beep alert
  27.      PRINT "   Error - program aborted"           ' print quit message and
  28.      END                                          ' end program
  29. END IF
  30. Device$ = UCASE$(Device$)                         ' convert to uppercase
  31. PRINT "   Okay, output will go to "; Device$;     ' print reply
  32. PRINT "   Strike a key to continue";              ' print pause message
  33. DO                                                ' and wait for a key
  34.      LOCATE , , 1
  35. LOOP WHILE INKEY$ = ""
  36.  
  37.      ' open Device$.  BASIC will report any error messages as they occur.
  38. OPEN Device$ FOR OUTPUT AS 1                      ' open device (file, etc.)
  39.  
  40. PRINT
  41. PRINT "   Reading in data"
  42.  
  43.      ' Read the random data included as DATA statements below
  44.      ' (1000 statements exist).
  45. PRINT #1, "*-------------------- Unsorted Arrays ----------------------*"
  46. FOR i% = 1 TO 1000                                ' get 1000 strings to sort
  47.      READ Ar$(i%)                                 ' put data into array to sort
  48.      PRINT #1, Ar$(i%)                            ' print non-sorted array to device
  49. NEXT i%
  50. PRINT
  51. PRINT "Sorting...";
  52. PRINT
  53.  
  54. BeginTime! = TIMER                                ' save beginning timer value
  55. CALL RiplSort(Ar$(), 1000)                        ' call the sort routine
  56. EndTime! = TIMER                                  ' stop the clock!
  57. SortTime! = EndTime! - BeginTime!                 ' determine time required to sort
  58.  
  59. PRINT
  60. PRINT CHR$(7); "Sort complete!: "; SortTime!; "required to sort 1000 records!"
  61. PRINT
  62. PRINT "Strike a key to see sorted output to "; Device$; "...";
  63. DO
  64.      LOCATE , , 1
  65. LOOP WHILE INKEY$ = ""
  66.  
  67. PRINT #1, ""
  68. PRINT #1, ""
  69. PRINT #1, "*------------------------- Sorted Arrays ----------------------*"
  70. FOR i% = 1 TO 1000
  71.      PRINT #1, Ar$(i%)
  72. NEXT i%
  73.  
  74. PRINT
  75. PRINT "Demo Finished"
  76. END
  77.  
  78.  
  79.      ' Sort data follows
  80. DATA "DRHALO   EXE", "PRESENTS EXE", "SETUP    EXE"
  81. DATA "CENTMED  FON", "CURSBOLD FON", "CURSIVE  FON", "CPU"
  82. DATA "DISKETTE", "DRIVE", "SOFTWARE", "HARDWARE"
  83. DATA "GRAPHICS", "MONITOR", "UTILITY", "BASCOM"
  84. DATA "MICROSOF", "TRUMAN", "HISTORY", "GRETSORT"
  85. DATA "F12X12   FON", "WEEKLY   NEW", "UNDO     CMD", "ABORT    CMD"
  86. DATA "PASTE    CMD", "PRINT    COL", "EXIT     YOU", "DELETE   THI"
  87. DATA "UNCASH   BIL", "WEAKSEAK DEK", "IBMBIO   COM", "IBMDOS   COM"
  88. DATA "AUTOEXEC BAT", "COMMAND  COM", "CONFIG   SYS", "MAIN     BAT"
  89. DATA "B1       COM", "BENHMARK", "BIOS     COM", "CHK-MHZ  COM"
  90. DATA "CK-ANSI  BAT", "COLRTEST COM", "CORETEST COM", "CPU-ID   COM"
  91. DATA "CPU-NDP  COM", "DIAG     COM", "DISKTEST EXE", "MAIN     MEN"
  92. DATA "AUTOTEST EXE", "DMATEST  EXE", "DRIVSPEC COM", "EQSTATUS COM"
  93. DATA "EQUIP    COM", "HD       COM", "IW-BENCH EXE", "MEMORY   EXE"
  94. DATA "MENU        ", "LS       EXE", "OTHRCOPY LZH", "PATCH    COM"
  95. DATA "PROUNLOK COM", "DISKCOPY", "TELEDISK EXE", "VIEWDISK EXE"
  96. DATA "ZORKTOOL COM", "CLONE    EXE", "COPY-U   EXE", "MARBLMAD ZIP"
  97. DATA "ZORK-ALL ARC", "BULKERAS COM", "COPYIIPC EXE", "DISKSPED BAT"
  98. DATA "NOGUARD  COM", "NOKEY    COM", "PARMS    DOC", "COPYWDOC ZIP"
  99. DATA "COPYWRIT COM", "RAMKEY   COM", "COPYWRIT", "SOLOBOOT COM"
  100. DATA "UNGUARD  COM", "ZERODISK COM", "ASMGEN   COM", "BUB-DASM LZH"
  101. DATA "DASSEMBL EXE", "DUMP     COM", "FILEDUMP COM", "DISASM"
  102. DATA "SYMDEB   EXE", "PCWATCH  COM", "PCWATCH  PRO", "PCWATCH  SYS"
  103. DATA "PCWATCH  TBL", "PCWATCHT ZIP", "PCWATCH", "UFORMAT  COM"
  104. DATA "UOPT     COM", "U-FORMAT", "UZAP     COM", "UFILE    COM"
  105. DATA "UDOCS    ZIP", "NEWEST   ZIP", "PFSWUNP  ZIP", "UNPROT"
  106. DATA "ALF19UNP ZIP", "MENU     BAT", "MENU2       ", "CPU"
  107. DATA "DISKETTE", "DRIVE", "SOFTWARE", "HARDWARE"
  108. DATA "GRAPHICS", "MONITOR", "UTILITY", "BASCOM"
  109. DATA "MICROSOF", "MIPS     COM", "PCS      COM", "TELEDISK EXE"
  110. DATA "VIEWDISK EXE", "ZORKTOOL COM", "CLONE    EXE", "COPY-U   EXE"
  111. DATA "MARBLMAD ZIP", "ZORK-ALL ARC", "BULKERAS COM", "COPYIIPC EXE"
  112. DATA "COPYIIPC", "DISKSPED BAT", "SDIR     $$$", "SPEAKER  COM"
  113. DATA "SPEED    COM", "SPINTEST COM", "SPINTIME COM", "SYS-INFO COM"
  114. DATA "SYSID    EXE", "V20TIMER COM", "VIDEOTST EXE", "XTDIAG   COM"
  115. DATA "DOSKNOWS EXE", "SCANNER  EXE", "PCBENCH  ZIP", "ANADISK  EXE"
  116. DATA "BASUPROT COM", "TELEDISK EXE", "VIEWDISK EXE", "ZORKTOOL COM"
  117. DATA "CLONE    EXE", "COPY-U   EXE", "DISKTEST EXE", "MAIN     MEN"
  118. DATA "AUTOTEST EXE", "DMATEST  EXE", "MARBLMAD ZIP", "ZORK-ALL ARC"
  119. DATA "BULKERAS COM", "COPYIIPC EXE", "DISKSPED BAT", "INT13    COM"
  120. DATA "SDIR     $$$", "BLOAD    BAS", "PRNSDIR  BAS", "AEDIT    BAT"
  121. DATA "AUTOFORM BAT", "CCOPY    BAT", "DELFILE  BAT", "FINDDATE BAT"
  122. DATA "GAME     BAT", "SETDISK  COM", "DOS", "GRAPHICS BAT"
  123. DATA "LINE     BAT", "MOUSE    BAT", "MOVE     BAT", "RAMDISK  BAT"
  124. DATA "SETPATH  BAT", "UNC-ALL  BAT", "ADATER   COM", "ALARM    COM"
  125. DATA "CHMOD    COM", "CLEAN    COM", "CS       COM", "TELEDISK EXE"
  126. DATA "VIEWDISK EXE", "ZORKTOOL COM", "CLONE    EXE", "COPY-U   EXE"
  127. DATA "MARBLMAD ZIP", "ZORK-ALL ARC", "BULKERAS COM", "COPYIIPC EXE"
  128. DATA "DISKSPED BAT", "D        COM", "DEBUG    COM", "DECIDE   COM"
  129. DATA "DEFRAG   COM", "ALTSROFF COM", "ASSIGN   COM", "BASICA   COM"
  130. DATA "BROWSE   COM", "CACHE    COM", "CHD      COM", "CHKDSK   COM"
  131. DATA "EDIT     COM", "EPSONFX  COM", "EXE2BIN  COM", "EXE2COM  COM"
  132. DATA "F11F12   COM", "FACECLOK COM", "FORMTOOL HLP", "FORMTOOL MNU"
  133. DATA "FORMTOOL", "FASTDRV  COM", "TELEDISK EXE", "VIEWDISK EXE"
  134. DATA "ZORKTOOL COM", "CLONE    EXE", "COPY-U   EXE", "MARBLMAD ZIP"
  135. DATA "ZORK-ALL ARC", "BULKERAS COM", "MAKELABL BAS", "FASTBACK"
  136. DATA "RECORD   BAS", "GAME     BAT", "GAME1    MEN", "GAME2    MEN"
  137. DATA "GAME3    MEN", "GAMES", "TUNES    MEN", "BCAT     DAT"
  138. DATA "COPYIIPC EXE", "DISKSPED BAT", "FATBACK  COM", "FILESIZE COM"
  139. DATA "FILLDISK COM", "FIND     COM", "FINDDUPE COM", "FLUSHOT  COM"
  140. DATA "FORMAT   COM", "FREERAM  COM", "GCOPY    COM", "CPU"
  141. DATA "DISKETTE", "DRIVE", "SOFTWARE", "HARDWARE"
  142. DATA "GRAPHICS", "MONITOR", "UTILITY", "BASCOM"
  143. DATA "MICROSOF", "HOLD        ", "DOC4PROG", "DIRENAME COM"
  144. DATA "DIRSIZE  COM", "DIRSORT  COM", "DISCLOCK COM", "DISKCOMP COM"
  145. DATA "DISKTYPE COM", "ED       COM", "CONVERT  DOC", "RPRN     DOC"
  146. DATA "BANNER   COM", "DTP      BAT", "BOLDL    FON", "BOLDS    FON"
  147. DATA "F        001", "FINGPANT", "HERC     FON", "WEEKLY   NEW"
  148. DATA "UNDO     CMD", "ABORT    CMD", "PASTE    CMD", "PRINT    COL"
  149. DATA "EXIT     YOU", "DELETE   THI", "UNCASH   BIL", "WEAKSEAK DEK"
  150. DATA "MINI     FON", "PAINT    BAT", "PLAINL   FON", "PLAINS   FON"
  151. DATA "ROMANL   FON", "ROMANS   FON", "MOUSE    LZH", "PIC"
  152. DATA "CFG      BAK", "FORMTOOL DAT", "FORMTOOL EXE", "FORMTOOL TBL"
  153. DATA "PC106    FNT", "PC106B   FNT", "PRNTUTIL EXE", "TBL      BAK"
  154. DATA "ALLFORMS ZIP", "FORMMADE", "BLOD2PUT COM", "FONTMOVE COM"
  155. DATA "FONTSDJ  DIC", "FONTSDJ  WID", "FONTSLJ  WID", "FONTSLW  DIC"
  156. DATA "FP       HLP", "FP", "FP       CVT", "FPPRINT  DEF"
  157. DATA "GRAB2BAS BAS", "MASTER   FNT", "MASTER   DEF", "READMAC  COM"
  158. DATA "SMOOTH   PS ", "SNAP2ART COM", "SNAPSHOT COM", "SYSTEM   FNT"
  159. DATA "UARTPAT2 PS ", "ALLPUB   ZIP", "FP-MAPS  ZIP", "PUB"
  160. DATA "GRID     PUB", "HALO     CNF", "HALOIBM  DEV", "HALOVRI  DEV"
  161. DATA "DRHALO   EXE", "GRAB     EXE", "PRESENTS EXE", "HALO"
  162. DATA "SETUP    EXE", "CENTITAL FON", "CENTMED  FON", "CURSBOLD FON"
  163. DATA "CURSIVE  FON", "F12X12   FON", "F16X16   FON", "F18X28   FON"
  164. DATA "F6X9     FON", "F8X8A    FON", "F9X14    FON", "GOTHIC   FON"
  165. DATA "GREEK    FON", "HALO201  FON", "HALO202  FON", "ITALIC   FON"
  166. DATA "ROMAN1   FON", "ROMAN2   FON", "ROMAN3   FON", "DRHALO   HLP"
  167. DATA "DISKSPED BAT", "D        COM", "DEBUG    COM", "DECIDE   COM"
  168. DATA "DEFRAG   COM", "ALTSROFF COM", "ASSIGN   COM", "BASICA   COM"
  169. DATA "BROWSE   COM", "CACHE    COM", "HALOEPSN PRN", "EXAMPLE  PIC"
  170. DATA "GOTHIC   FNT", "HP7510A  PAL", "HPG      DIR", "HPG      EXE"
  171. DATA "HARVARD", "HPG      CFG", "ITALIC1  FNT", "ITALIC2  FNT"
  172. DATA "MPS2000  PAL", "ROMAN1   FNT", "ROMAN2   FNT", "SCRIPT1  FNT"
  173. DATA "SCRIPT2  FNT", "SSERIF1  FNT", "SSERIF2  FNT", "VDI      OVL"
  174. DATA "5           ", "BARINCOM CHT", "MEATBIRD CHT", "MINCOME  CHT"
  175. DATA "MINCOME2 CHT", "GRAPH", "PIE-OW   CHT", "HPG      DIR"
  176. DATA "BORDERS1 BIC", "BORDERS1 BNM", "BORDERS1 NUM", "BREMEN   FNT"
  177. DATA "CAFE     FNT", "COMPUTER FNT", "CUSTOM   SHP", "CUSTOM   SDR"
  178. DATA "PM", "DEVILLE  FNT", "EDITOR   FNT", "EXAMINER FNT"
  179. DATA "FONTS1   FIC", "CPU", "DISKETTE", "DRIVE"
  180. DATA "SOFTWARE", "HARDWARE", "GRAPHICS", "MONITOR"
  181. DATA "UTILITY", "BASCOM", "MICROSOF", "FONTS1   FSZ"
  182. DATA "FONTS4   FNM", "FONTS4   NUM", "FONTS4   FSZ", "GAMMON   FNT"
  183. DATA "GOTHIC   FNT", "HAMPTON  FNT", "JOYCE    FNT", "LCD      FNT"
  184. DATA "MAIN     SHP", "NEWS18   FNT", "NEWS18B  FNT", "NEWS18I  FNT"
  185. DATA "OFFICE   FNT", "OSLO20B  FNT", "OSLO20BC FNT", "PARIS    FNT"
  186. DATA "PARK18   FNT", "PARK18B  FNT", "PARK18I  FNT", "PATTICON SHP"
  187. DATA "PM       EXE", "PM       PRN", "PM-IMADE ZIP", "PMAG1    SDR"
  188. DATA "PMAG1    SHP", "PMTOOLS  EXE", "PMTOOLS  DOC", "PUBDOM1  SHP"
  189. DATA "PUBDOM1  SDR", "QUILL    FNT", "RHODES   FNT", "ROMAN    FNT"
  190. DATA "SCRIBE   FNT", "SET      UP ", "SMALLCAP FNT", "STANDARD SDR"
  191. DATA "STANDARD SHP", "TRIBUNE  FNT", "TWIG     FNT", "UTOPIA   FNT"
  192. DATA "WESTERN  FNT", "ARTCON14 DOC", "TOOLS", "ARTCON14 EXE"
  193. DATA "SDIR     $$$", "B-BACKUP BAT", "COMPBACK BAT", "DAYBACK  BAT"
  194. DATA "FASTBACK COM", "FRESTORE COM", "MAKELABL BAS", "FASTBACK"
  195. DATA "RECORD   BAS", "GAME     BAT", "GAME1    MEN", "GAME2    MEN"
  196. DATA "GAME3    MEN", "DRHALO   EXE", "GRAB     EXE", "PRESENTS EXE"
  197. DATA "HALO", "SETUP    EXE", "CENTITAL FON", "CENTMED  FON"
  198. DATA "CURSBOLD FON", "CURSIVE  FON", "F12X12   FON", "GAMES"
  199. DATA "TUNES    MEN", "BCAT     DAT", "GAME1", "1KPYMID"
  200. DATA "CAT      DAT", "RND      DAT", "BO_TITLE EXE", "PYRAMID  EXE"
  201. DATA "BO_SCR   PIC", "BO_SHP   PIC", "FNT      PIC", "PYRAMID1 PIC"
  202. DATA "PYRAMID2 PIC", "PYRAMID3 PIC", "PYRAMID4 PIC", "WINNER   PIC"
  203. DATA "PYRAMID  SCR", "PYMIDDOC ZIP", "CENTPEED COM", "CENTPEED"
  204. DATA "CELL     CGA", "EAGLE", "CHAR     CGA", "ELEV     CGA"
  205. DATA "FINP     CGA", "FONT     CGA", "LOGO     CGA", "STAT     CGA"
  206. DATA "START    COM", "MAP0     DAT", "MAP1     DAT", "JOYSTICK CTP"
  207. DATA "TOPTENA  CTP", "MAPU     DAT", "MUSC     DAT", "MUSI     DAT"
  208. DATA "EAGLE    EXE", "MONOCODE 001", "MONOCODE 003", "MONOGRAF GRA"
  209. DATA "MONOPOLY", "MONOPOLY COM", "MORIA    CNF", "MORIA"
  210. DATA "JOYSTICK CTP", "TOPTENA  CTP", "MORIA    EXE", "MORIA    SCR"
  211. DATA "NATION   EXE", "NATION", "MAP         ", "BIMAGE1  DAT"
  212. DATA "BIMAGE1B DAT", "BIMAGE2  DAT", "NINJA", "BIMAGE2B DAT"
  213. DATA "FONT     DAT", "FONT2    DAT", "FONT2B   DAT", "FONTB    DAT"
  214. DATA "IMAGES   DAT", "IMAGESB  DAT", "PF       DAT", "PFB      DAT"
  215. DATA "NINJA    EXE", "NINJAX   ZIP", "BIZERK   COM", "BJTALK   COM"
  216. DATA "DRAGONS  COM", "GO-MOKU  COM", "HARDHAT  COM", "HOPPER   COM"
  217. DATA "OTHERS", "MZPACMAN COM", "OFFROAD  COM", "PACKMAN  COM"
  218. DATA "QUBERT   COM", "SMINER   COM", "SOLITARE COM", "WEEKLY   NEW"
  219. DATA "UNDO     CMD", "ABORT    CMD", "PASTE    CMD", "PRINT    COL"
  220. DATA "EXIT     YOU", "DELETE   THI", "UNCASH   BIL", "WEAKSEAK DEK"
  221. DATA "GO-MOKU  HLP", "DRAGONS  HST", "BS       SCO", "HOPPER   SCO"
  222. DATA "SMINERHS ZZZ", "PANGO    COM", "PANGO", "PANGO    HGH"
  223. DATA "HISCORE     ", "MAP      BIN", "QUAKE", "QUAKE    EXE"
  224. DATA "BOARD       ", "RISK     EXE", "RISK", "HIGHSCOR DAT"
  225. DATA "MISFAC   DAT", "STRIKER", "STRIKER  COM", "STRKLOGO DAT"
  226. DATA "STRKPARM DAT", "TUNNELS  DAT", "XONIX    BIN", "XONIX    COM"
  227. DATA "BASRUN   EXE", "XONIX", "HISCORES XNX", "TOPGUN   COM"
  228. DATA "3DEMON   COM", "3DEMON", "3-DEMON  HI1", "CASTLE   COM"
  229. DATA "CASTLE", "CASTLE   RAN", "ABM      COM", "SMGAME   COM"
  230. DATA "BABY     COM", "BEAST    COM", "CHESS1   COM", "GRAPHY   COM"
  231. DATA "JANITJOE COM", "JJ       DAT", "MAXGAME  COM", "MAXHEAD  COM"
  232. DATA "MAXHEAD2 DAT", "PITFALL  COM", "ROUND42  EXE", "SHOAX    COM"
  233. DATA "TEM-INS  EXE", "TEMPLE   EXE", "TNUKE    COM", "UNO      COM"
  234. DATA "READMAC  COM", "GIFMAC", "ALLMAC   ZIP", "GREY     LZH"
  235. DATA "ASTRO    COM", "EM       COM", "INVADERS COM", "LOCKERS"
  236. DATA "OTHERS", "PARATROP COM", "TIMING   COM", "PIANOMAN LZH"
  237. DATA "PIANO", "CHACONNE COM", "CMINOR   COM", "TUNES"
  238. DATA "ENTERTAN COM", "FESTBERG COM", "INVENTN4 COM", "JBOND    COM"
  239. DATA "PYTHON   COM", "QNAVEE   COM", "REDROSE  COM", "RKTYTKTY COM"
  240. DATA "SYNCLOCK COM", "TURKISH  COM", "TVTUNE   COM", "WACHTAUF COM"
  241. DATA "WILLOW   COM", "WILLTELL COM", "PLAY     DAT", "MAGIC    COM"
  242. DATA "MASTER   COM", "PINBALL", "TOMATO   COM", "TWILZONE COM"
  243. DATA "APRIL    COM", "BACKTALK COM", "BUG      COM", "DECEIVE  COM"
  244. DATA "DRAIN    COM", "PRANK", "DRIP     COM", "DUMB     COM"
  245. DATA "EYE      COM", "FAKE123  COM", "FIX      COM", "FLIP     COM"
  246. DATA "FUNNYDOS EXE", "HELPME   COM", "HOTBOOT  COM", "MAC      COM"
  247. DATA "MRORGAN  COM", "QQ       EXE", "ATITDOC  ZIP", "COVER    SCR"
  248. DATA "INST0    SCR", "INST1    SCR", "SCR0     SCR", "SCR4     SCR"
  249. DATA "PARTS    BAS", "N1       IMG", "N3       IMG", "TEXTSTUF ZIP"
  250. DATA "TEXTFILE", "CRYPTOR  ZIP", "DOCMAKER TXT", "DOCMAKER COM"
  251. DATA "MIND     COM", "POLSCALE COM", "TIMEDON  FRM", "HOLDTANK"
  252. DATA "DAZZLER  COM", "MSG1        ", "OTHRHOLD LZH", "3DMENU   ZIP"
  253. DATA "BACKDATA BAT", "MAINDATA DAT", "MBASE", "MAINDATA EXE"
  254. DATA "MBASE    EXE", "PRNTDATA EXE", "MAINDATA KEY", "FRAMTEL  BAS"
  255. DATA "FRAMTEL  BAT", "BUSINESS TEL", "RICHLAND TEL", "PHONE"
  256. DATA "FRIEND   TEL", "1RECORD     ", "FINDALL  BAS", "HIGHNUMB BAS"
  257. DATA "FINDALL  COM", "TESTDATA ZIP", "DEMO     ZZZ", "TOOLS"
  258. DATA "AUTODDC  ASP", "CHKSUM   COM", "CRC      COM", "CRC2     COM"
  259. DATA "DSZ      COM", "GO       BAT", "PCPLUS   KEY", "PCPLUS   PRM"
  260. DATA "MODEM", "PCSETUP  EXE", "PROCOMM  DIR", "PROZ     COM"
  261. DATA "ALSCREEN ZIP", "LEN      DOC", "LEN2     DOC", "SCREENS"
  262. DATA "NPAD     COM", "TINYPRT  COM", "PD       COM", "PRNAPPL  LZH"
  263. DATA "PRTFONT  ARC", "SDIR     $$$", "CONTROL", "SIDEWAYS COM"
  264. DATA "TSR      LZH", "BOXLABEL COM", "COVER    COM", "LAB-DOC  ZIP"
  265. DATA "LBL      COM", "LBL35V1  EXE", "LABEL", "STARLAB  EXE"
  266. DATA "RETLABEL DAT", "ADDLABEL DAT", "PROGRAM  BAT", "A86STUFF LZH"
  267. DATA "A86", "DOSBAS   ZIP", "JUSTBASC", "BIGPROGS"
  268. DATA "MICKEY   BAS", "CALENDAR BAS", "CHECKERS BAS", "CLOCK    BAS"
  269. DATA "COMPAT   BAS", "GRAPHIT  BAS", "HANGMAN  BAS", "ELECTION BAS"
  270. DATA "MATCHIT  BAS", "WEEKLY   NEW", "UNDO     CMD", "ABORT    CMD"
  271. DATA "PASTE    CMD", "PRINT    COL", "EXIT     YOU", "DELETE   THI"
  272. DATA "UNCASH   BIL", "WEAKSEAK DEK", "MENU     BAS", "ORGAN    BAS"
  273. DATA "TICTAC   BAS", "PCWORM2  BAS", "CARWARS  BAS", "PCWORM   BAS"
  274. DATA "NOTES    BAS", "ZAPEM    BAS", "PUZZLE   BAS", "READ-BAS COM"
  275. DATA "BAS2FORT ZIP", "LINK     EXE", "MASM     EXE", "PROGLANG"
  276. DATA "MASM", "ALLASM   ZIP", "SOURCE.COD", "BOOK-ASM ZIP"
  277. DATA "GMAKE    COM", "MOUSE", "GMAKE1   EXE", "LOTUS    GMK"
  278. DATA "MENUS", "LOTUS    MNU", "POP-UP   GMK", "POP-UP   MNU"
  279. DATA "TXT2PAS  COM", "TP       BAT", "TURBO    COM", "PASCAL"
  280. DATA "CUBE     PAS", "T2C      ZIP", "MS-T2C", "EXAMPLES ZIP"
  281. DATA "PAS-SOUR ZIP", "SOURCE.COD", "TINST    MSG", "TINST    DTA"
  282. DATA "TURBO    MSG", "TURBO.MSG", "ASM2PAS  COM", "SCAN     EXE"
  283. DATA "PCMAC    ASM", "COMPILE  BAT", "TXT2C    COM", "POWERC"
  284. DATA "MIX      EXE", "PC       EXE", "PCL      EXE", "PCO      EXE"
  285. DATA "ALLOC    H  ", "ASSERT   H  ", "BIOS     H  ", "CONIO    H  "
  286. DATA "CTYPE    H  ", "DIR      H  ", "DIRECT   H  ", "DOS      H  "
  287. DATA "ERRNO    H  ", "MERGE    EXE", "COMPILED", "WORKS    ZIP"
  288. DATA "LOCKING  H  ", "STAT     H  ", "TIMEB    H  ", "SYS"
  289. DATA "TYPES    H  ", "UTIME    H  ", "C-FILES  ZIP", "QSORT    C  "
  290. DATA "HOLD", "QSORT    EXE", "GETPARM  EXE", "GETAKEY  EXE"
  291. DATA "GETAKEY  C  ", "CCLS     C  ", "CCLS     EXE", "CHILD    C  "
  292. DATA "WORKSOK", "QSORT    C  ", "SHELL    C  ", "BARCHART C  "
  293. DATA "PIECHART EXE", "Q        BAT", "BC       EXE", "LIB      EXE"
  294. DATA "QB", "LINK     EXE", "QB       EXE", "MYLIB    HED",
  295. DATA "QB       HLP", "QB       INI", "NOCOM    OBJ", "NOEM     OBJ"
  296. DATA "QB       PIF", "INTRPT   QLB", "MYLIB    QLB", "MASSSORT BAS"
  297. DATA "MAINDATA DAT", "RIPLSORT BAS", "1000RECS    ", "DATA     BAS"
  298. DATA "HEX2BIN  COM", "MISCBOOK ZIP", "QSORT2   SUB", "BOOK"
  299. DATA "COOLGRID SUB", "CKDSKSPC SUB", "LOADPIC  ZIP", "MISCSUBS ZIP"
  300. DATA "HOLDSTUF ZIP", "PCSPELL  LZH", "HOLDTANK", "LIBDEMO  BAS"
  301. DATA "WARMBOOT BAT", "FONT     BAS", "BCOM40   LIB", "BQLB40   LIB"
  302. DATA "BRUN40   LIB", "INTRPT   LIB", "LIB", "MYLIB    LIB"
  303. DATA "ADVBAS   LIB", "OBJECT   ARC", "ADDLINE# COM", "BAS2C    LZH"
  304. DATA "BAS2SB   COM", "BLOD2PUT COM", "CAPTURE  DOC", "CAPTURE  COM"
  305. DATA "GRAB2BAS BAS", "GRID     COM", "HELP     DOC", "HELP     COM"
  306. DATA "OPTCALL  LZH", "PRNTSUBS COM", "QBUTIL40 EXE", "QLBDUMP  COM"
  307. DATA "REMLINE  COM", "SDIR     $$$", "UNCOMGEN BAS", "SOURCE   ZIP"
  308. DATA "MYERS    DAT", "PLOTTER  BAS", "BAR      BAS", "DBASELOC    "
  309. DATA "MBASE", "FIELD       ", "DATA     BAS", "EXAMDATA BAS"
  310. DATA "FIXMDATA BAS", "HIGHNUMB BAS", "MAINDATA BAS", "MBASE    BAS"
  311. DATA "PRNTDATA BAS", "MAINDATA DAT", "PRNTDATA QBO", "PROGRUN  XXX"
  312. DATA "MBASESRC ZIP", "MWSORT   BAS", "MWSORT   EXE", "MWSORT2  EXE"
  313. DATA "MWSORT   TBO", "SORTS", "PROGRUN  XXX", "MWSORT   BAS"
  314. DATA "MAINDATA DAT", "MWSORT   EXE", "TB       EXE", "TBCONFIG TB "
  315. DATA "TBHELP   TBH", "ADVBAS   QLB", "ADVTEST  BAS", "ADVBAS"
  316. DATA "BUBBLEST BAS", "CSORT    QB4", "CSORT    BAS", "MNTSORT  LZH"
  317. DATA "MWMSORT  BAS", "MWSORT   QB4", "MWSSRT   COM", "RIPLSORT BAS"
  318. DATA "SPLITSRT BAS", "SPLIT2ST BAS", "DEFAULT     ", "FIXQP    BAS"
  319. DATA "HDEFAULT    ", "QP       BAT", "QPRLDB   OV2", "QUIKPRO"
  320. DATA "QPRLDB   SRT", "QUIKDOC3    ", "QUIKDOK     ", "QUIKMENU    "
  321. DATA "QUIKPRO5    ", "QUIKPRT4    ", "QXDOC3      ", "RANDPRT     "
  322. DATA "RANDWRT     ", "PHONEY   FIL", "FAKE     FIL", "JOKE     THN"
  323. DATA "ANOTHER  FIL", "MAKETHIS UP", "EXTRA    DAT", "MONEY4   NIL"
  324. DATA "EXTRA    CAS", "FREEWARE XXX", "XXX      FRE", "GMWELCH  FIL"
  325. DATA "ANOTHER  TWO", "WEEKLY   NEW", "UNDO     CMD", "ABORT    CMD"
  326. DATA "PASTE    CMD", "PRINT    COL", "EXIT     YOU", "DELETE   THI"
  327. DATA "UNCASH   BIL", "WEAKSEAK DEK", "MEEKLEAK FEK", "ONLYYOU  SMO"
  328. DATA "ADEREKFX DFJ", "EIRIELFK FEL", "FELDKFIE DFO", "FLDFIKSI LFE"
  329. DATA "LSDFIOER KDP", "LIREEICX DME", "EEEMEEME FEO", "FIRELFDD ERE"
  330.  
  331. ' ********************************************************************************
  332. ' ** Name:    RiplSort                                                          **
  333. ' ** Type:    SubProgram                                                        **
  334. ' ** Lang:    MS-QuickBASIC or BASICA                                           **
  335. ' ** Author:  Mike Welch                                                        **
  336. ' ** Purpose: A really fast BASIC sort                                          **
  337. ' ** History: Mike Shaffer (of Dallas) first introduced me to his               **
  338. ' **          modification of the Mentat sort (ripple sort) by answering        **
  339. ' **          a request for help in creating a fast QB sort.  However, because  **
  340. ' **          I am very particular about modular/top-down/structured (et al.)   **
  341. ' **          code being in my programs, I decided to modify Mike's modification**
  342. ' **          of the Mentat sort.  However, after spending 7-10 hours rewriting **
  343. ' **          the routine, the result was a sort algorithim that was slower than**
  344. ' **          the old faithful QSort.  In sheer desperation, I managed to get   **
  345. ' **          a copy of the MNTSORT itself; I made the necessary changes to     **
  346. ' **          make the program truly structured.  (The original contained 15+   **
  347. ' **          GOTO's and line labels).  This sort is the end result of          **
  348. ' **          15 + hours of work.  I think that it will prove to be the         **
  349. ' **          fastest STRUCTURED sort for a BASIC program.  My thanks to        **
  350. ' **          both Mike Shaffer and Richard F. Ashwell III, author of the       **
  351. ' **          MNTSORT (Mentat) sort.  Yes friends, it blows the Qsort away.     **
  352. ' ** Other:   Mike Shaffer's MWSSRT.BAS sorting algorithim is copyright by      **
  353. ' **          Mike Shaffer, as well as my modification of the MWSSRT--called    **
  354. ' **          RIPLSOR2.BAS.  However, since this code is a remake of the        ** 
  355. ' **          original ripple sort as presented by R. Ashwell III, I reserve    **
  356. ' **          the copyrights.  I am copyrighting this RIPLSORT algorithim for   **
  357. ' **          one reason:  I don't want to be flipping through my favorite PC   **
  358. ' **          magazine and see MY sort!  I am currently in college and if anyone**
  359. ' **          needs the bucks from a magazine article, it's me.  Otherwise...   ** 
  360. ' **          This routine is FREE to whomever cares to use it.  As you can     **
  361. ' **          probably tell it is written for Microsoft's (C) QuickBASIC        **
  362. ' **          compiler.  However, with modification it could surely be used     **
  363. ' **          in BASIC(a) as well. I invite your comments and improvements.     **
  364. ' **          Keep the SHAREWARE idea alive by sending comments/improvements.   **
  365. ' ** Coore:   Send comments to:  Mike Welch: PO Box 401011: Dallas, TX 75243.   **
  366. ' ** Finals:  Original author's address (a software company) below:             **
  367. ' **          Mentat Software: Richard F. Ashwell III:  1830 Dover Rd.: Dover   **
  368. ' **          Florida:  33527                                                   **
  369. ' ********************************************************************************
  370. '
  371. '
  372. SUB RiplSort (Ar$(), Elements%) STATIC
  373.        
  374.         ' Dimension array variables and initialize
  375. DIM Plane%(0 TO 1000), Wave%(0 TO 1000)
  376. CONST FALSE% = 0, TRUE% = NOT FALSE%
  377. Y% = Elements%
  378.  
  379.         ' Begin the sort routine
  380. DReg% = 1
  381. Plane%(DReg%) = 1
  382. Wave%(DReg%) = Y%
  383. EReg% = 1
  384. AReg% = Y%
  385.  
  386. DO
  387.         DO
  388.                 EndLoop% = TRUE%
  389.                 IF (AReg% - EReg%) < 9 THEN
  390.                         IF (AReg% - EReg%) = 0 THEN
  391.                                 EReg% = Plane%(DReg%)
  392.                                 AReg% = Wave%(DReg%)
  393.                                 DReg% = DReg% - 1
  394.                                 IF NOT DReg% = 0 THEN
  395.                                         EndLoop% = FALSE%
  396.                                 ELSE
  397.                                         ' < Sort ends here       >
  398.                                         ' < so erase the markers >
  399.                                    ERASE Plane%, Wave%
  400.                                    EXIT SUB
  401.                                 END IF
  402.                         END IF
  403.                         IF EndLoop% = TRUE% THEN
  404.                                 FOR BReg% = (EReg% + 1) TO AReg%
  405.                                         FOR CReg% = EReg% TO (BReg% - 1)
  406.                                                 FReg% = BReg% - CReg% + EReg% - 1
  407.                                                 IF NOT Ar$(FReg%) <= Ar$(FReg% + 1) THEN
  408.                                                         SWAP Ar$(FReg%), Ar$(FReg% + 1)
  409.                                                 END IF
  410.                                         NEXT CReg%
  411.                                 NEXT BReg%
  412.                         END IF
  413.                 END IF
  414.         LOOP UNTIL EndLoop% = TRUE%
  415.         BReg% = EReg%
  416.         CReg% = AReg%
  417.  
  418.         DO
  419.                 IF Ar$(BReg%) > Ar$(CReg%) THEN
  420.                         SWAP Ar$(CReg%), Ar$(BReg%)
  421.                         DO
  422.                                 BReg% = BReg% + 1
  423.                                 IF CReg% > BReg% THEN
  424.                                         IF Ar$(CReg%) < Ar$(BReg%) THEN
  425.                                                 SWAP Ar$(CReg%), Ar$(BReg%)
  426.                                                 EXIT DO
  427.                                         END IF
  428.                                 ELSE
  429.                                         EXIT DO
  430.                                 END IF
  431.                         LOOP
  432.                 END IF
  433.                 CReg% = CReg% - 1
  434.         LOOP WHILE CReg% > BReg%
  435.         CReg% = CReg% + 1
  436.         DReg% = DReg% + 1
  437.         IF (BReg% - EReg%) < (AReg% - CReg%) THEN
  438.                 Plane%(DReg%) = CReg%
  439.                 Wave%(DReg%) = AReg%
  440.                 AReg% = BReg%
  441.         ELSE
  442.                 Plane%(DReg%) = EReg%
  443.                 Wave%(DReg%) = BReg%
  444.                 EReg% = CReg%
  445.         END IF
  446. LOOP
  447.  
  448. END SUB
  449.  
  450.