ich habe folgendes Problem: beim Aufrufen der Prozedur wird diese zwar ausgeführt, allerdings wird auch der Ausgabeteil am Ende genau so oft durchlaufen, wie ich Zufallszahlen im Array habe. Offensichtlich habe ich die Schleife falsch aufgebaut, kann aber beim besten Willen den Fehler nicht finden.
Kann mir bitte jemand einen Hinweis geben ?
Ich arbeite nur mit konsolenbasiertem Pascal (Vorgabe Schule) und mit CharmPascal 2.5 (meine Wahl).
Code: Alles auswählen
procedure QuicksortMitStatistik(var Zufallszahlen: ZufallszahlenArray; Links, Rechts: Longint);
var
i, j, Pivot, Temp, Vergleiche: Longint;
Startzeit, Endzeit: TDateTime;
Zeitdauer: TTime;
begin
Vergleiche := 0;
Startzeit := Now; // Aufzeichnung der Startzeit
if Links < Rechts then
begin
Pivot := Zufallszahlen[(Links + Rechts) div 2];
i := Links;
j := Rechts;
while i <= j do
begin
while Zufallszahlen[i] < Pivot do
i := i + 1;
while Zufallszahlen[j] > Pivot do
j := j - 1;
if i <= j then
begin
Temp := Zufallszahlen[i];
Zufallszahlen[i] := Zufallszahlen[j];
Zufallszahlen[j] := Temp;
i := i + 1;
j := j - 1;
Vergleiche := Vergleiche + 1;
end;
end;
QuicksortMitStatistik(Zufallszahlen, Links, j);
QuicksortMitStatistik(Zufallszahlen, i, Rechts);
end;
Endzeit := Now; // Aufzeichnung der Endzeit
writeln('Anzahl der Vergleiche: ', Vergleiche);
writeln('Startzeit: ', FormatDateTime('hh:nn:ss:zzz', Startzeit));
writeln('Endzeit: ', FormatDateTime('hh:nn:ss:zzz', Endzeit));
Zeitdauer := Endzeit - Startzeit;
writeln('Gemessene Zeitdauer: ', FormatDateTime('hh:nn:ss:zzz', Zeitdauer));
end;