Entwickler-Ecke

Algorithmen, Optimierung und Assembler - BubbleSort-Algorithmus


-delphin- - Fr 03.06.05 12:06
Titel: BubbleSort-Algorithmus
Also, ich würde ganz gerne 5 Labels, die grundsätzlich Zahlen von 1-6 sind, der Größe nach ordnen.
Die Labels heißen L1 - L6. Nur blöderweise verstehe ich den BubbleSort Algorithmus nicht, vielleicht kann den mir jemand mal erklären, wäre sehr nett. Ich weiß, wie der BubbleSort funktioniert, hab schon viele Threads hier und bei Wikipedia etc. gelesen, aber wirklich anwenden kann ich ihn nicht.
Thx im Vorraus,
Delphin


Moderiert von user profile iconraziel: Topic aus Sonstiges verschoben am Fr 03.06.2005 um 14:47


Narses - Fr 03.06.05 12:21

Moin!

user profile icon[Delphi]N hat folgendes geschrieben:
Nur blöderweise verstehe ich den BubbleSort Algorithmus nicht, vielleicht kann den mir jemand mal erklären, wäre sehr nett. Ich weiß, wie der BubbleSort funktioniert, hab schon viele Threads hier und bei Wikipedia etc. gelesen, aber wirklich anwenden kann ich ihn nicht.

Dann hast du den Algorithmus auch nicht verstanden :wink: , guckst du nochmal hier [http://www.delphi-forum.de/viewtopic.php?p=197199#197199].

Wenn du es damit auch nicht hinkriegst, dann zeig mal deinen Code, sonst kommen wir nicht weiter.

cu
Narses


-delphin- - Fr 03.06.05 12:46

Hm ich hab das jetzt 2mal gelesen, aber irgendwie verstehe ich es nicht so wirklich.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
procedure BubbleSort(Items: TLabels);
var
  done: boolean;
  i, n: integer;
  Dummy: string;
begin
  n := Items.Count;

  repeat
    done := true;
    for i := 0 to n do
      if Items[i] > Items[i + 1then
      begin
        Dummy := Items[i];
        Items[i] := Items[i + 1];
        Items[i + 1] := Dummy;

        done := false;
      end;
  until done;
end;


so ist mein Code bisher.
Zuerst habe ich Variablen festgelegt, dann die Labels in Items zählen lassen (Count) und dann von i= 0 bis n eine schleife durchlaufen lassen und die dann tauschen lassen mithilfe der Variablen Dummy.
Funktioniert aber alles nicht..
Nochmal ich habe 5 Labels, L1, L2, L3, L4, L5.
Wenn ich mithilfe des Buttons BWuerfeln gewürfelt habe, habe ich z.b. in der Reihenfolge 3-6-5-5-2 und das soll mir in einem Editfeld (EAusgabe) in der sortieren Reihenfolge ausgegeben werden.


Narses - Fr 03.06.05 12:52

Moin!

Zwei Sachen noch:

1. Wie ist die Deklaration von Items[]?
2. Du sagst, du hast den Thread 2x gelesen (OK, und nicht verstanden; was genau?), aber hast noch nicht bemerkt, dass BubbleSort 2 Schleifen hat... :gruebel:

cu
Narses


Heiko - Fr 03.06.05 12:55

user profile iconNarses hat folgendes geschrieben:
aber hast noch nicht bemerkt, dass BubbleSort 2 Schleifen hat... :gruebel:

Ihr/Sein Quelltext hat doch 2 Schleifen. Einmal eine for-to-do-Schleife und einmal eine repeat-until-Schleife.


Narses - Fr 03.06.05 12:57

Ahhh, oh Gott, ich bin blind... :shock: Stimmt, sorry. :wink:

cu
Narses

//EDIT: Und schon wieder muss ich mich korrigieren... man sollte nicht beim Essen im Forum sein... :wink:
Items ist als TLabels deklariert. Was also ist TLabels, mein D7pro kennt´s nicht.


-delphin- - Fr 03.06.05 13:09

TLabel ist doch die Bezeichnung für ein Label oder? oO
ich weiß gar nicht, wie Items deklariert werden sollen...


Narses - Fr 03.06.05 13:17

Moin!

Tu doch mal den Code, der deine Sortierprozedur aufruft auch hier rein, vielleicht klärt das ja.

cu
Narses


harryp - Fr 03.06.05 17:48

kurze Zwischenfrage : Warum muss es Bubble-Sort sein ??? Gibt viel effektivere und schnellere Sortieralgorithmen... :?:


Gausi - Fr 03.06.05 17:54

Ich denke, wenn man 5 Zahlen sortieren muss, die die Werte 1 bis 6 haben, um eine Auswertung für Kniffel zu machen, dann reicht Bubblesort.


harryp - Sa 04.06.05 11:53

nagut, hast recht. für 5 zahlen von 1 bis 6 wär's wirklich blöd mit quicksort oder so zu kommen...


-delphin- - Sa 04.06.05 16:41

der code, der die sortierprozedur aufruft ist einfach was mit Button1Click und dann BubbleSort (Items: TLabel) und das wars^^


Narses - So 05.06.05 02:13

Moin!

Hab mich möglicherweise nicht klar genug ausgedrückt: Ich kann mit TLabels nichts anfangen, also welche Delphi-Version benutzt du, wie ist TLabels deklariert und am besten zeigst du den gesamten Code, aus dem Stück Sortierprozedur werde ich nicht schlau, was den Fehler angeht.

cu
Narses


harryp - So 05.06.05 20:21

Also entweder steh ich jetzt auf dem Schlauch, aber wer programmiert ein Delphi-Programm, in welchem man mit Bubble-Sort sortiert, hat aber keine Ahnung was ein Label is ?!


Narses - So 05.06.05 22:01

Moin!

Man(n) Lese und Schreibe, in dieser Reihenfolge! :mahn: :wink:

Da steht nicht TLabel, sondern TLabels. Und damit kann ich nun mal nix anfangen.
Kannst du? Dann erklär´s.
cu
Narses


harryp - Mo 06.06.05 16:45

ich bin der meinung, dass er sich einfach verschrieben hat. kann mich natürlich auch irren, aber sollte bestimmt bloß "tlabel" heißen.