BubbleSort Vergleiche und Vertauschungen zählen
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:
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.
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; 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 |
Re: BubbleSort Vergleiche und Vertauschungen zählen
Schreib doch einfach zwei Methoden für Swap und Compare.
Beide benötigen als Übergabeparameter die Indexwerte für A und B. Wenn die du Zähler bsswap und bscompare innerhalb dieser Methoden erhöhst kann doch gar nichts mehr schiefgehen. (Ausser du hast vergessen die Zähler vor dem Sortieren auf 0 zu setzen) Schau mal hier, da wird gezeigt, wie man es OOP like macht. |
Re: BubbleSort Vergleiche und Vertauschungen zählen
Woah super. Die werde ich erstmal durcharbeiten, danke!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:11 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz