AGB  ·  Datenschutz  ·  Impressum  







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

Bubble-Sort

Ein Thema von netscanner · begonnen am 28. Feb 2006 · letzter Beitrag vom 28. Feb 2006
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von netscanner
netscanner

Registriert seit: 2. Dez 2005
Ort: Dieburg
280 Beiträge
 
Delphi 6 Enterprise
 
#1

Bubble-Sort

  Alt 28. Feb 2006, 13:33
Hallo,

ich habe grade ein bissell nach dem Sortier-Algo Bubble-Sort gesucht hab da auch was gefunden:

Delphi-Quellcode:
procedure vertauschen(var a, b: Char);
var h: Char;
begin
h:= a;
a:= b;
b:= h;
end;

procedure TForm1.Button1Click(Sender: TObject);
var word1, word2 : string;
    anzahl,j,k,w:integer;
begin
word1:=edit1.text;
word2:=edit1.text;
anzahl:=length(word1);

for j:=anzahl downto 1 do
        begin
        for k:=1 to j do
                begin
                if (word2[k-1]>word2[k]) then vertauschen(word2[k-1], word2[k]);
                end;
        end;

edit2.text:=word2;
end;
ist ja auch schön und gut...könnte mir jetzt nur mal bitte jemand die procedur vertauschen erklären...
Außerdem kappier ich das ab der 1. for - Schleife nicht wirklích
Martin
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.640 Beiträge
 
#2

Re: Bubble-Sort

  Alt 28. Feb 2006, 13:46
Zitat von netscanner:
ist ja auch schön und gut...könnte mir jetzt nur mal bitte jemand die procedur vertauschen erklären...
Was willst Du da dran erklärt haben??? Die vertauscht einfach nur die Werte von a und b.

Delphi-Quellcode:
procedure vertauschen(var a, b: Char);
var
   h: Char;
begin
   h := a; // Den Wert von a in h 'sichern'
   a := b; // Den Wert von b nach a schreiben
   b := h; // Den alten gesicherten Wert von a nach b schreiben
end;
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.640 Beiträge
 
#3

Re: Bubble-Sort

  Alt 28. Feb 2006, 13:48
Nachtrag: Wie der Bubblesort genau tut steht übrigens recht gut im Tutorial Sortieralgorithmen I + II von Cheffe^^
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von netscanner
netscanner

Registriert seit: 2. Dez 2005
Ort: Dieburg
280 Beiträge
 
Delphi 6 Enterprise
 
#4

Re: Bubble-Sort

  Alt 28. Feb 2006, 13:50
okey das ist klar aber wie arbeiten die verschiedenen for schleifen miteinander und dann die zeile
if (word2[k-1]>word2[k]) then vertauschen(word2[k-1], word2[k]);
Martin
  Mit Zitat antworten Zitat
Benutzerbild von Schaedel
Schaedel

Registriert seit: 5. Jan 2006
Ort: Saarland
174 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Bubble-Sort

  Alt 28. Feb 2006, 13:51
Delphi-Quellcode:
for j:=anzahl downto 1 do
        begin
        for k:=1 to j do
                begin
                if (word2[k-1]>word2[k]) then vertauschen(word2[k-1], word2[k]);
                end;
        end;
Anzahl is die Länge des Strings.
Dann geht er rückwärts durch den string durch und vergleicht jede zahl mit den anderen im String.
wo er dann aber das sortierte zurück gibt .... seh ich gerade nicht oO
Michael S.
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: Bubble-Sort

  Alt 28. Feb 2006, 13:53
@netscanner

Zitat:
if (word2[k-1]>word2[k]) then vertauschen(word2[k-1], word2[k]);
wenn word2 an der Position [k-1] größer ist als an der Position [k] dann tausche den Wert an
Position [k-1] mit [k]

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von Schaedel
Schaedel

Registriert seit: 5. Jan 2006
Ort: Saarland
174 Beiträge
 
Delphi 2007 Professional
 
#7

Re: Bubble-Sort

  Alt 28. Feb 2006, 13:54
klaus... das hab ich ja nicht geschrieben ... *hust* ...
Michael S.
  Mit Zitat antworten Zitat
Benutzerbild von netscanner
netscanner

Registriert seit: 2. Dez 2005
Ort: Dieburg
280 Beiträge
 
Delphi 6 Enterprise
 
#8

Re: Bubble-Sort

  Alt 28. Feb 2006, 13:57
@Schaedel:

edit2.text:=word2; dort gibt er den Wert zurück
Martin
  Mit Zitat antworten Zitat
Minz

Registriert seit: 19. Dez 2002
476 Beiträge
 
#9

Re: Bubble-Sort

  Alt 28. Feb 2006, 13:57
Hallo,

wenn die Prozedur vertauschen aufgerufen wird, werden ihr 2 Zeichen übergeben, die in a und b gespeichert werden.

a wird dann in h zwischengespeichert.
dann wird a zu b
und b wird zu h, also dem alten a-Wert

Zur Erklärung des Restlichen:

Du hast 2 for-Schleifen. Angenommen du hast das Wort HILFE

Jetzt durchläufst du das Wort HILFE mit EINER For-Schleife.
Dann vergleichst du im 1. Schritt H und I, H ist kleiner als I also nicht vertauschen
Dann vergleichst du im 2. Schritt I und L, I ist kleiner als L also nicht vertauschen
Dann vergleichst du im 3. Schritt L und F, L ist größer als F also vertauschen

Hier zeigt sich für mich ein Fehler in vertauschen:
außer die Buchstaben in beliebigen Variablen zu tauschen, wird nichts gemacht.
Das Wort HIFLE sollte irgendwo gespeichert werden um damit weiterarbeiten zu können.
z.B. durch word2[k-1]:=a und word2[k]:=b
In Folge dessen zeigen sich aber noch mehr Schwächen in dem Programm.

Hast du die Schleife beendent, in diesem Fall die innere Schleife, erhälst du das Wort HIFEL
Jetzt musst du die Sortierung aber nochmal drüberlaufen lassen, denn jeder Buchstabe wird ja nur um einen Platz verschoben, wenn es nötig ist. Im schlimmsten Fall steht ganz hinten ein A und muss nach ganz vorne gebracht werden.
Daher brauchst du also eine zweite Schleife.
Der Algorithmus den du vorgelegt hast, berücksichtigt die letzte Stelle des Wortes allerdings nur beim 1. Durchgang, was für mich nicht verständlich ist.

Gruß Minz
  Mit Zitat antworten Zitat
Benutzerbild von Schaedel
Schaedel

Registriert seit: 5. Jan 2006
Ort: Saarland
174 Beiträge
 
Delphi 2007 Professional
 
#10

Re: Bubble-Sort

  Alt 28. Feb 2006, 13:58
Zitat:
Hier zeigt sich für mich ein Fehler in vertauschen:
außer die Buchstaben in beliebigen Variablen zu tauschen, wird nichts gemacht.
Das Wort HIFLE sollte irgendwo gespeichert werden um damit weiterarbeiten zu können.
z.B. durch word2[k-1]:=a und word2[k]:=b
In Folge dessen zeigen sich aber noch mehr Schwächen in dem Programm.
100% Agree... Darauf wollte ich hinaus
Michael S.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 17:03 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