Ich habe in einem Delphi Buch eine Shell Sort Sortier Routine gefunden und auf Luckies Beispiel angepasst. Das Ganze sieht dann so aus:
Delphi-Quellcode:
procedure ShellSort(sl: TStrings);
var
bis, i, j, k: LongInt;
h:
String;
begin
bis := sl.Count -1;
k := bis
shr 1;
while k > 0
do begin
for i := 0
to bis -k
do begin
j := i;
while (j >= 0 )
AND (ExtractDateFromString(sl[j]) > ExtractDateFromString(sl[j + k]))
do begin
h := sl[j];
sl[j] := sl[j + k];
sl[j + k] := h;
if j > k
then dec(j, k)
else j:=0;
end;
// ENDE While (j >= 0 ..
end;
// for i := 0
k := k
shr 1;
end;
// ENDE While
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ShellSort(Listbox1.Items);
end;
Habs probiert geht um einiges schneller als BubbleSort (< 1 Sec)!