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.