Einzelnen Beitrag anzeigen

striderx

Registriert seit: 11. Feb 2007
Ort: Bergisch Gladbach
206 Beiträge
 
Delphi 10.4 Sydney
 
#1

Quicksort-Rätsel

  Alt 12. Nov 2014, 14:16
Delphi-Version: XE5
Hallo zusammen,

seit nicht wenigen Jahren setze ich Quicksort zum sortieren von Daten ein - alles problemlos. Jetzt habe ich aber einen Fall, in dem das Sortier-Ergebnis nicht korrekt ist. Wenn ich dann noch einmal sortiere stimmt es. Auch wenn ich alternativ einen Insertion-Sort nehme, klappt es - d. h. an der Vergleichsfunktion ('Less', s. u.) scheint es also nicht zu liegen.

Kann mir bitte jemand das Brett vor em Kopf wegnehmen?



Hier der Source Code:

procedure tdlgMain.SortData;

begin
DataSort(1, TotalRecs);
end;

procedure tdlgMain.DataSort(Start, Stop: Word);

var
tStart: Word;
tStop: Word;
pTemp: rCompRec;

begin
tStart := Start;
tStop := Stop;
aData[0] := aData[(tStart + tStop) DIV 2];
repeat
while Less(tStart, 0) do Inc(tStart);
while Less(0, tStop) do Dec(tStop);
if tStart <= tStop then begin
pTemp := aData[tStart];
aData[tStart] := aData[tStop];
aData[tStop] := pTemp;
Inc(tStart);
Dec(tStop);
end;
until tStart > tStop;
if Start < tStop then DataSort(Start, tStop);
if tStart < Stop then DataSort(tStart, Stop);
end;
  Mit Zitat antworten Zitat