BBS: Inland Empire Archive Date: 12-07-92 (22:52) Number: 306 From: JOE NEGRON Refer#: NONE To: SHANE HEADER Recvd: NO Subj: Alphabetizer FUNCTION Conf: (2) Quik_Bas
SH> Does anyone have a FUNCTION that that will alphabatize a complete
> string array? I have tried unsucessfuly. I'm sure I could do it, but I
> thought I would check with you guys to see if you had one lying around.
What you need is a sort routine. There are a number of different
sorting methods; here is a relatively simple one, based on the Bubble
Sort, called a "Comb" sort:
============================== Begin code ==============================
DEFINT A-Z
DECLARE SUB CombSort (Array$())
'***********************************************************************
'* SUB CombSort
'*
'* PURPOSE
'* Sorts an array using the Comb sort algorithm.
'*
'* CREDIT(S)
'* This routine was taken from the article "A Fast, Easy Sort", by
'* Stephen Lacey and Richard Box, from the "Hands On" column of the
'* April 1991 issue of Byte.
'***********************************************************************
SUB CombSort (Array$()) STATIC
FirstEl% = LBOUND(Array$)
LastEl% = UBOUND(Array$)
Gap% = LastEl%
DO
IF Gap% * 8 / 11 > 1 THEN
Gap% = Gap% * 8 / 11
ELSE
Gap% = 1
END IF
Switch% = 0
FOR I% = FirstEl% TO LastEl% - Gap%
J% = I% + Gap%
IF Array$(I%) > Array$(J%) THEN
SWAP Array$(I%), Array$(J%)
Switch% = Switch% + 1
END IF
NEXT I%
LOOP UNTIL Switch% = 0 AND Gap% = 1
END SUB
=============================== End code ===============================
Simply pass your array to this SUB as follows:
CombSort Array$()
or
CALL CombSort(Array$())
As I said, there are a number of different sorting algorithms. I use
this one the majority of the time since it is small, simple, and fairly
fast.
Just for comparison's sake, here is a Shell sort:
============================== Begin code ==============================
DEFINT A-Z
DECLARE SUB ShellSort (Array$())
'***********************************************************************
'* SUB ShellSort
'*
'* PURPOSE
'* Sorts an array using the shell sort algorithm.
'***********************************************************************
SUB ShellSort (Array$()) STATIC
FirstEl% = LBOUND(Array$)
LastEl% = UBOUND(Array$)
Span% = LastEl% \ 2
DO WHILE Span% > 0
Boundary% = LastEl% - Span%
DO
Flag% = 0
FOR I% = FirstEl% TO Boundary%
IF Array$(I%) > Array$(I% + Span%) THEN
SWAP Array$(I%), Array$(I% + Span%)
Flag% = I%
END IF
NEXT I%
Boundary% = Flag% - Span%
LOOP WHILE Flag%
Span% = Span% \ 2
LOOP
END SUB
=============================== End code ===============================
Both of these routines are fairly fast, and require a minimal amout of
memory.
BTW, these routines are implemented as SUBs rather than FUNCTIONs,
because they do not need to return a value to the caller.
--Joe in Bay Ridge, Brooklyn, NY--
Mon 12-07-1992, 22:38
* SLMR 2.1a * Windows: Brought to you by the makers of Edlin!
--- Maximus 2.01wb
* Origin: * BlueDog BBS * (212) 594-4425 * NYC FileBone Hub (1:278/709)

Books at Amazon:
Back to BASIC: The History, Corruption, and Future of the Language
Hackers: Heroes of the Computer Revolution (including Tiny BASIC)
Go to: The Story of the Math Majors, Bridge Players, Engineers, Chess Wizards, Scientists and Iconoclasts who were the Hero Programmers of the Software Revolution
The Advent of the Algorithm: The Idea that Rules the World
Moths in the Machine: The Power and Perils of Programming
Mastering Visual Basic .NET