Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Probleme mit Bubblesort (https://www.delphipraxis.net/179252-probleme-mit-bubblesort.html)

Janno1808 22. Feb 2014 21:40


Probleme mit Bubblesort
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hey Mituser :)

Ich (der totale Delphi anfänger) habe ein problem mit dem Sortieren von Arrays mit Hilfe von Bubblesort. Ich möchte ein array mit 9 Stellen zufällige Werte geben, sie dann mit dem Bubblesort Prinzip sortieren lassen und am Ende in ein Memofeld ausgeben. Alles klappt bis auf das sortieren (was ja das wichtigste ist xD)

Falls mir jemand sagen kann wo der Fehler ist und am besten auch gleich wie ich ihn beheben kann, wäre ich sehr dankbar :D

Hier der Code: http://puu.sh/76zzy.png (eine Fehlermeldung gibt es nicht :x)

Aviator 22. Feb 2014 21:51

AW: Probleme mit Bubblesort
 
Du weist in deiner Procedure deinem Array A[i+1] wieder A[i] zu, anstatt dem in Temp gemerkten Wert. Das sollte wohl der Fehler sein.

PS.: Du kannst den Code auch hier mit Hilfe von Delphi Tags posten. (Der Delphi Helm ca. in der Mitte des Editors.)

Edit: Unten im Hinweis Fenster wird übrigens auch erwähnt, dass du die Variable Temp bzw. deren Wert zuweist, aber nirgends benutzt.

Janno1808 22. Feb 2014 21:56

AW: Probleme mit Bubblesort
 
Oh, danke, die Stelle sieht jetzt so aus:
then begin
Temp := A[i];
A[i] := A[i+1];
A[i+1] := temp;
end;

sortiert sind die Zahlen aber immer noch nicht

Aviator 22. Feb 2014 22:03

AW: Probleme mit Bubblesort
 
Liste der Anhänge anzeigen (Anzahl: 1)
Benutz doch mal an Stelle von A[i] die Variable j. Dann sollte es funktionieren. Habe ich beim ersten Mal übersehen.

Im Anhang ein Bild, wie du Code mit Delphi Tags versehen kannst, dann wird er besser lesbar.

Delphi-Quellcode:
then begin
  Temp := A[j];
  A[j] := A[j+1];
  A[j+1] := temp;
end;

Janno1808 22. Feb 2014 22:06

AW: Probleme mit Bubblesort
 
Wow, es sind immer die simplen Sachen die einem das Leben schwer machen. Im nachhinein ist A[i] ja auch total unlogisch haha

Vielen dank, es funktioniert jetzt :D

Sir Rufo 22. Feb 2014 22:36

AW: Probleme mit Bubblesort
 
Eine ganz simple Sache - simpler als ein ScreenShot - ist auch CopyPaste von Text.

Wenn du deinen ersten Beitrag noch um den Quelltext (mit Delphi-Tags) ergänzen könntest, dann kannst du auch den Link vom Bild entfernen.

BTW Bilder kannst du hier auch direkt als Anhang einfügen, dann bleiben die auch hier im Forum erhalten.

Volker Z. 22. Feb 2014 22:49

AW: Probleme mit Bubblesort
 
Hallo,

Zitat:

Vielen dank, es funktioniert jetzt
Ja, funktionieren tut es schon, aber der Algorithmus könnte etwas effizienter implementiert werden. Wieso laufen beide for-Schleifen von 1 bis Max - 1 (wenn die innere Schleife nur noch den Teil behandelt, der noch nicht vollständig sortiert ist, dann kann man sich da schon noch ein paar Zyklen einsparen).

Delphi-Quellcode:
procedure BubbleSort (var A : tArr);
var
  i, j, temp : Integer;
begin
  for i := 1 to Max - 1 do
    begin
      for j := Max downto i + 1 do
        begin
          if A [i] > A [j] then
            begin
              temp := A [j];
              A [j] := A [i];
              A [i] := temp
            end
        end
end;

Gruß

Janno1808 22. Feb 2014 22:51

AW: Probleme mit Bubblesort
 
Die downto anweisung war mir bis eben nicht bekannt. Aber ja, so schein es noch ein wenig schneller zu gehen

Volker Z. 22. Feb 2014 23:03

AW: Probleme mit Bubblesort
 
Hallo,

Zitat:

[...] Aber ja, so schein es noch ein wenig schneller zu gehen
Um etwas genauer zu sein: Es hat "nur" - stimmt nicht ganz exakt - die halbe Laufzeit


Gruß


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:12 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