AGB  ·  Datenschutz  ·  Impressum  







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

Irgendwo ein Rechenfehler

Ein Thema von bl4ckb1rd · begonnen am 23. Feb 2009 · letzter Beitrag vom 24. Feb 2009
Antwort Antwort
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#1

Re: Irgendwo ein Rechenfehler

  Alt 24. Feb 2009, 19:41
Ich glaube Deine BubbleSort Routine ist mangelhaft, zumindest im Nachbau funktionierte es nicht.

Hier mal der Nachbau, der aber mit ein paar Änderungen funktioniert:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
const
  pyt1 : array[1..10] of Byte = (4,7,2,9,4,1,0,8,3,5);
var
  pyt4 : Byte;
  i, bots : Integer;
  getauscht : Boolean;
begin
  // Init
  bots := High(pyt1);
  ListBox1.Clear;
  ListBox1.Items.Add('Items: '+IntToStr(bots));

  // Bubblesort
  repeat
    getauscht := false;
    for i := 1 to bots - 1 do begin
      if pyt1[i] > pyt1[i+1] then begin
        pyt4 := pyt1[i];
        pyt1[i] := pyt1[i+1];
        pyt1[i+1] := pyt4;
        getauscht := true;
      end;
    end;
    dec(bots); // Laut Pseudocode Max -1

  until (not getauscht) and (bots < 2); // Laut Pseudocode Abbruch bei "Nicht getauscht" und "Liste fertig"

  // Zum Prüfen des Ergebnis
  for i := 1 to High(pyt1) do
    ListBox1.Items.Add(IntToStr(pyt1[i]));
Im Pseudocode steht ja am Ende "solange vertauscht und n >= 1". Da Delphi aber auf "solange nicht" prüft, müssen beide Bedingungen negiert geprüft werden. Zudem muss nach Durchlauf einer Schleife der Zeiger auf das letzte Listen-Element decrementiert werden.
  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 09:09 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz