BBS: Inland Empire Archive Date: 02-06-93 (03:57) Number: 284 From: RICH GELDREICH Refer#: NONE To: WAYNE VENABLES Recvd: NO Subj: Re: Sorting Conf: (2) Quik_Bas
> I badly need a good pointer sort routine for a program im writing,
> and I don't know every much about sorting... The routine needs to be
> able to sort integers, and it needs to a _pointer sort_ for the task i
> need it for, it also needs to be very very fast (This will stretch you
> skill to the limits!!)
I use pointer sorts all the time, so perhaps I can help. (Some
people calls pointer sorts virtual sorts, also...). Here's some code off
the top of my head, which uses a very simplistic form of a Shell sort:
DIM Array(0 to MaxElement)
DIM Pointers(0 to MaxElement)
'Initialize pointers
FOR A=0 to MaxElement
Pointers(A)=A
NEXT
Mid=MaxElement\2
DO
DO
S=0
FOR A=0 to MaxElement-Mid
IF Array(Pointers(A))>Array(Pointers(A+Mid)) then
Swap Pointers(A),Pointers(A+Mid)
S=-1
END IF
NEXT
LOOP WHILE S
Mid=Mid\2
LOOP WHILE Mid
After the sort is complete, the first sorted element is
Array(Pointers(0)). The last element is Array(Pointers(MaxElement))).
This would print the sorted array:
FOR A=0 to MaxElement
PRINT Array(Pointers(A));
NEXT
This type of sort works great for string arrays, or when the
elements that must be sorted take a great deal of time to move around.
Rich
--- MsgToss 2.0b
* Origin: Computer Co-Op - Voorhees, NJ | Ted Hare (1:266/29)

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