AGB  ·  Datenschutz  ·  Impressum  







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

Fehler im Bubblesortcode?

Ein Thema von craash · begonnen am 24. Jan 2010 · letzter Beitrag vom 25. Jan 2010
Antwort Antwort
craash

Registriert seit: 23. Nov 2008
Ort: Mühlacker
79 Beiträge
 
Delphi 7 Enterprise
 
#1

Fehler im Bubblesortcode?

  Alt 24. Jan 2010, 23:39
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...

Delphi-Quellcode:
  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

[edit=mkinzler]Code-Tag durch Delphi-Tag ersetzt Mfg, mkinzler[/edit]
uses Delphi 5 Std. / TurboDelphi 2006
  Mit Zitat antworten Zitat
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, 23: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
mz23
(Gast)

n/a Beiträge
 
#3

Re: Fehler im Bubblesortcode?

  Alt 25. Jan 2010, 07:57
Schönen guten Morgen,

BubbleSort habe ich irgendwie so (wie unten gezeigt) in Erinnerung.

Warum verwendest Du (Sie) ein "repeat ... until" darin!?

Delphi-Quellcode:
const amax = 3;

var Carray : array[0..amax] of integer;
      a, b : integer;
...
Carray wird mit Werten gefüllt
...

for a:=0 to amax-1 do
    for b:=a+1 to amax do
        if Carray[a] < Carray[b] then
           Swap_Carray(a,b); // austauschen der Inhalte an den Positionen a und b
Mit freundlichen Grüßen
Manfred Zenns
  Mit Zitat antworten Zitat
Benutzerbild von user0815
user0815

Registriert seit: 5. Okt 2007
331 Beiträge
 
Delphi XE2 Professional
 
#4

Re: Fehler im Bubblesortcode?

  Alt 25. Jan 2010, 08:12
http://www.stefan-baur.de/cs.algo.bubblesort.html
  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 10:29 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