Ich möchte bei BubbleSort zu einem Zählen, wieviele Vergleiche getätigt werden unter den Zahlen, sowie die eigentlichen Vertauschungen die vorgenommen wurden
Delphi-Quellcode:
procedure TFach.BubbleSort;
var done: boolean;
var i, Dummy, bscompare, bsswap : integer; // <---
begin
bscompare := 0; // <---
bsswap := 0; // <---
repeat
done := true;
for i := 0 to Number - 2 do
begin
inc(bscompare); // <---
if Items[i] > Items[i + 1] then
begin
Dummy := Items[i];
Items[i] := Items[i + 1];
Items[i + 1] := Dummy;
inc(bsswap); // <---
setSwap(bsswap); // <---
done := false;
end;
end;
until done;
setCompare(bscompare);
end;
Die Ergebnisse sind nur leider mehr als unverständlich, zumindestens für mich. Z.B. generiere ich zufällig 100 Zahlen und sortiere sie mit dieser Prozedur. Das Ergebniss Vergleiche=98 und Vertauschungen=2562. Weder das eine noch das andere ist richtig. Zumal bei vergleiche sowieso immer Anzahl der generierten Zahlen - 2 ist.
Hat jemand eine Idee worand as liegen könnte? Komme bei dieser Fummelarbeit nicht vorwärts und hoffe vorallem das es nur an dieser Prozedur liegen kann.
MfG Kuonrât