Einzelnen Beitrag anzeigen

Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#2

Re: Fehler im Bubblesortcode?

  Alt 24. Jan 2010, 22:56
Zitat von craash:
Guten Abend,

ich habe ein Integerarray[0..3], welches nach Größe abnehmend sortiert werden soll. Bei einem Testlauf haben alle Elemente bevor der folgende Code ausgeführt wird den Zahlenwert 0.
Hinterher hat das zweite Element (Index 1) allerdings den Wert 4. Ich komme einfach nicht dahinter wieso das so ist...

Code:
  b:= 0;
  repeat
  for a:= 0 to 3 do
    begin
    if Array_Temp[a] < Array_Temp[a+1] then
      begin
      SwapTemp:= Array_Temp[a];
      Array_Temp[a]:= Array_Temp[a+1];
      Array_Temp[a+1]:= SwapTemp;
      end;
    end;
    Inc(b);
  until b= 3;
Wo ist mein Fehler? Hoffe ihr könnt mir weiterhelfen..


Grüße
Was soll die äußere Schleife mit der Variable b? Die Variable b taucht jedenfalls in der inneren Schleife gar nicht auf!
Richtig ist natürlich, daß Bubblesort aus zwei Schleifen besteht, einer inneren und einer äußeren. Da deren Durchlaufanzahl jedoch determiniert (=vorherbestimmt) ist, sind zwei for-Schleifen eigentlich günstiger und logischer.

Desweiteren läuft die innere Schleife bis 3, ein Element wird jedoch mit a+1, also mit 4 indiziert - und das, obwohl das Array nur bis 3 läuft.

In diesem Forum findet sich genug zu diversen Sortieralgorithmen und natürlich auch Bubblesort. Auch meine Wenigkeit veröffentlichte mal ein Sortiervisualisierungsprogramm, in dem Bubblesort als elementarer Sortieralgorithmus enthalten ist.
  Mit Zitat antworten Zitat