Thema: Delphi Binäre Suche

Einzelnen Beitrag anzeigen

gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#16

Re: Binäre Suche

  Alt 8. Jul 2008, 15:33
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
  Mit Zitat antworten Zitat