Number sorting algo that I spat out yesterday can sort 10,000 64 BIT numbers in 15 seconds on a PIII 866MHz. Considering the simplicity of it - this is fast! The code is in Visual Basic but shouldn't be too hard to port to PBP. I don't have time to do it at the moment, anyone up for it? If you feel that you have an even better solution, please post it here.
Code:Private Function Sort_Numbers(ByRef Num_Array) ' (An easy to get your head around algo) Dim Compare_A As Long Dim Compare_B As Long Dim Swap As Long Dim Array_Pos As Long Dim i As Long Dim j As Long Dim k As Long i = UBound(Num_Array) ' Size / last index of array k = i ' Copy of i used to show progress - indexes sorted thus far Do Until i = 0 ' Loop until entire list has been sorted Compare_A = Num_Array(i) ' Load comparison var (starting at bottom of list) For j = Array_Pos To i ' Try to find a bigger num (starting from top of list) Compare_B = Num_Array(j) ' If Compare_B > Compare_A Then ' This num bigger? Swap = Num_Array(i) ' Swap them Num_Array(i) = Compare_B ' Num_Array(j) = Swap Array_Pos = j ' Exit For ' Bail out, but we need to come back (might be an even bigger num) End If Next If j > i Then ' Num is in correct pos - nothing bigger exists i = i - 1 ' Move to next index Array_Pos = 0 ' Show user how many have been sorted so far (yes this will slow things down marginally) Progress = "Sorted " & (k - i) & " numbers" DoEvents End If Loop End Function




Bookmarks