Zitat von
p80286:
Hallo sx2008,
ich hab mir Deine Demo einmal angeschaut, und bin bei der Stringsuche irgenwie in der Botanik gelandet.
Ich hab dann ein wenig angepasst und jetzt läufts.
Gruß K-H
Ich denke, daß zumindest Deine Quciksort-Routine unter einem bekannten Problem leidet:
Delphi-Quellcode:
procedure TBSearch.QuickSort(L, R: Integer);
var
I, J, P: Integer;
begin
repeat
I := L;
J := R;
P := (L + R)
shr 1;
repeat
while Compare(I, P) < 0
do
Inc(I);
while Compare(J, P) > 0
do
Dec(J);
if (I <= J)
then
begin
Exchange(I, J);
Inc(I);
Dec(J);
end;
until (I > J);
if (L < J)
then
QuickSort(L, J);
L := I;
until (I >= R);
end;
Beim Tauschen wird der Pivotindex nicht angepaßt, vgl
http://www.delphipraxis.net/internal...ighlight=pivot
Nach Exchange sollte also eingefügt werden
Delphi-Quellcode:
{P muss weiter auf Pivot zeigen}
if I=P then P:=J
else if J=P then P:=I;
Luckies Routine hat das Problem nicht, da direkt mit einem Array gearbeitet wird.
Gruß Gammatester