Domino 9 und frühere Versionen > Entwicklung
LS Sortierroutine
TMC:
Hi,
ich habe verschiedenes alphabetisch zu sortieren. Meist Textlisten / Arrays.
Nun hab ich mal irgendwo gesehen, dass ein Sortieralgorithmus nicht generell für alles geeignet ist.
Es gibt afaik einen Algorithmus, der nur für kleine Listen gut geeignet ist, da aber dann sehr schnell, dann gibt es wieder einen Algorithmus der nur für große Listen taugt.
Ich habe hier beides vorliegen: große und kleine Listen.
Ich habe hier nur den Shell - Sort:
--- Code: ---Public Function ArrayShellSort (vSource As Variant) As Variant
On Error Goto ErrorHandler
Dim vSortArray As Variant
Dim bDone As Integer
Dim lngPointer As Long
Dim lngLoop1 As Long
Dim lngLoop2 As Long
Dim vTemp As Variant
If Not Isarray(vSource) Or Isempty (vSource) Then
ArrayShellSort = vSource
Exit Function
End If
vSortArray = vSource
lngPointer = Ubound (vSortArray)
'Algorithm by Donald Lewis Shell resp. Marlene Metzner
While lngPointer > 0
lngPointer = lngPointer \ 2
Do
bDone = True
For lngLoop2 = 0 To Ubound (vSortArray) - lngPointer
lngLoop1 = lngLoop2 + lngPointer
If vSortArray (lngLoop2) > vSortArray (lngLoop1) Then
vTemp = vSortArray (lngLoop1)
vSortArray (lngLoop1) = vSortArray (lngLoop2)
vSortArray (lngLoop2) = vTemp
bDone = False
End If
Next
Loop Until bDone
Wend
'Return the result
ArrayShellSort = vSortArray
ExitScript:
Exit Function
ErrorHandler:
Call ErrorMsg("ArrayShellSort")
Resume ExitScript
End Function
--- Ende Code ---
Was empfehlt Ihr für
a) kleine Listen
b) große Listen
?
elajen:
Hallo,
für große Listen würde ich Quick-Sort empfehlen. Das läuft durch rekursive Funktionsaufrufe.
Für kleine Listen kannst Du auf das altbewährte Bubble-Sort zurückgreifen.
Gruß von Ekki.
Glombi:
Den Quicksort Algorithmus verwendet Lotus bspw. im NAB um die Gruppenmitglieder zu sortieren.
Den Code verwende ich so - leicht angepasst.
Der Aufruf ist
SortiertesArray = QuickSort(UnsortiertesArray)
Andreas
elajen:
Hatte ich vergessen. Bei mir auf der Webseite unter
http://lncctest/el_html/langner-e/snipdata.php?id=14
steht auch eine Klasse rum.
Gruß von Ekki
EDIT: -> natürlich ist der Link: http://www.langner-e.de/snipdata.php?id=14
fritandr:
--- Zitat von: elajen am 02.03.05 - 14:40:36 ---Hatte ich vergessen. Bei mir auf der Webseite unter
http://lncctest/el_html/langner-e/snipdata.php?id=13
steht auch eine Klasse rum.
Gruß von Ekki
--- Ende Zitat ---
Hallo Ekki,
der Link funktioniert leider nicht!
Gruß
fritandr
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln