AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Probleme mit Bubblesort

Ein Thema von Janno1808 · begonnen am 22. Feb 2014 · letzter Beitrag vom 22. Feb 2014
Antwort Antwort
Janno1808

Registriert seit: 22. Feb 2014
4 Beiträge
 
#1

Probleme mit Bubblesort

  Alt 22. Feb 2014, 21:40
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

Hier der Code: http://puu.sh/76zzy.png (eine Fehlermeldung gibt es nicht )
Miniaturansicht angehängter Grafiken
76zzy.png  

Geändert von TBx (23. Feb 2014 um 19:01 Uhr) Grund: Bild des Quelltextes angehängt.
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.610 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: Probleme mit Bubblesort

  Alt 22. Feb 2014, 21:51
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.
  Mit Zitat antworten Zitat
Janno1808

Registriert seit: 22. Feb 2014
4 Beiträge
 
#3

AW: Probleme mit Bubblesort

  Alt 22. Feb 2014, 21:56
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
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.610 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: Probleme mit Bubblesort

  Alt 22. Feb 2014, 22:03
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;
Miniaturansicht angehängter Grafiken
tags.png  
  Mit Zitat antworten Zitat
Janno1808

Registriert seit: 22. Feb 2014
4 Beiträge
 
#5

AW: Probleme mit Bubblesort

  Alt 22. Feb 2014, 22:06
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
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Probleme mit Bubblesort

  Alt 22. Feb 2014, 22:36
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.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Volker Z.

Registriert seit: 3. Dez 2012
Ort: Augsburg, Bayern, Süddeutschland
419 Beiträge
 
Delphi XE4 Ultimate
 
#7

AW: Probleme mit Bubblesort

  Alt 22. Feb 2014, 22:49
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ß
Volker Zeller
  Mit Zitat antworten Zitat
Janno1808

Registriert seit: 22. Feb 2014
4 Beiträge
 
#8

AW: Probleme mit Bubblesort

  Alt 22. Feb 2014, 22:51
Die downto anweisung war mir bis eben nicht bekannt. Aber ja, so schein es noch ein wenig schneller zu gehen
  Mit Zitat antworten Zitat
Volker Z.

Registriert seit: 3. Dez 2012
Ort: Augsburg, Bayern, Süddeutschland
419 Beiträge
 
Delphi XE4 Ultimate
 
#9

AW: Probleme mit Bubblesort

  Alt 22. Feb 2014, 23:03
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ß
Volker Zeller
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:01 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