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 2 von 2     12   
Benutzerbild von netscanner
netscanner

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

Re: Bubble-Sort

  Alt 28. Feb 2006, 13:02
also nur als info an alle:

das programm läuft ohne probleme...

@schaedel & minz:
eure einwände erscheinen mir als logisch...aber warum läuft das programm dann ohne probleme...hilfe wird z.b. 100% richtig sortiert...
außerdem gibt es ja 2 for schleifen also weiß ich jetzt nicht genau worauf ihr hinaus wollt,,,
wie würdet ihr es denn schreiben?
Martin
  Mit Zitat antworten Zitat
Klaus01
Online

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

Re: Bubble-Sort

  Alt 28. Feb 2006, 13:21
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;

auch auf die Gefahr hin das ich mich unbeliebt mache, aber

wenn k=1 ist
wird word2[0] mit word2[1] verglichen -> da kann nicht gescheites bei herauskommen da in word[0]
die Längeinformation des Strings steht.


Delphi-Quellcode:
  for j:= 1 to anzahl -1 do
    for k:=j+1 to anzahl do
     if word2[k] > word2[j] then vertausche(word2[k],word2[j])
Hoffe hab' mich nicht zu sehr verhauen.

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

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

Re: Bubble-Sort

  Alt 28. Feb 2006, 13:24
okey klaus...aber dann füg doch mal den code bei dir in delphi ein und teste ihn...bei mir mach er bei der vertauschung keinen fehler...
Martin
  Mit Zitat antworten Zitat
Benutzerbild von Schaedel
Schaedel

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

Re: Bubble-Sort

  Alt 28. Feb 2006, 13:26
Zitat:
Bubble-Sort
"Sortieren durch direktes Austauschen"
Dieser Algorithmus ist bestimmt in jedem Informatik-Grundkurs und jeder Informatik-Vorlesung gelehrt worden. Er gehört eindeutig zu den gemütlichen Sortier-Algorithmen. Schon bei 100.000 Elementen kann sich erst mal einen Kaffee holen, bevor dieser Algorithmus mit seiner Arbeit fertig ist. Trotzdem ist er leicht zu begreifen:
Durchlaufe immer wieder das Feld und tausche wenn nötig zwei benachbarte Elemente miteinander aus.
Code: markieren
Delphi-Quellcode:
Procedure BubbleSort;
var i,j : Integer;
Begin
  For i:= N downto 1 Do
    For j:= 1 To i Do
      If (Data[j-1] > Data[j]) Then SwapValues( j-1, j );
End;
Siehe tutorial ...
Michael S.
  Mit Zitat antworten Zitat
angos

Registriert seit: 26. Mai 2004
Ort: Rheine
549 Beiträge
 
Delphi 11 Alexandria
 
#15

Re: Bubble-Sort

  Alt 28. Feb 2006, 13:28
Zitat von Schaedel:
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
Nein, die Werte werden als Var-Parameter übergeben, also direkt wieder in "Word2" zurückgeschrieben.
Und eben diese Variable wird zum Schluss wieder dem Edit zugewiesen. Ist meines Erachtens absolut korrekt.
Ansgar
  Mit Zitat antworten Zitat
Klaus01
Online

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

Re: Bubble-Sort

  Alt 28. Feb 2006, 13:37
gut funktioniert!

.. aber auch wenn Du k von 2 starten läßt

und funktioniert nicht korrekt wenn Du
auf word2[k-1] < word2[k] vergleichst.

Das Problem tritt auch nur dann auf wenn Du mit Strings arbeitest.
Bei einem Array kannst Du von 0 an vergleichen, bei einem String nicht.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#17

Re: Bubble-Sort

  Alt 28. Feb 2006, 15:00
Leute, Leute: Da beherrscht ihr Quicksort im Schlaf, könnt Bayerbaumsuchverfahren, A*-Pathinfinding-Algorithmen und Knuth-Morris-Pratt-Grahpen rückwärts aufsagen, aber am guten alten Babelsort beisst man sich doch wirklich die Zähne aus. Ich habe auch stundenlang probiert, aufgegeben, meine Rente eingereicht und schließlich den Source auf www.sortieralgorithmen.de genommen und in mühevoller Kleinarbeit in Delphi übersetzt. Das Team hat wochenlang geschuftet und jedes Byte wurde von unserem 50-köpfigen Spezialistenteam handoptimiert und hochglanzpoliert.

Nun ist es aber soweit: Wir präsentieren - Babelsort 1.0!

Delphi-Quellcode:
procedure BubbleSort (Var s: String);
Var
  j,k, n: Integer;

begin
  n := Length (s);
  for j:= n downto 2 do
    for k := 1 to j-1 do
     if s[k] > s[k+1] then
       vertausche(s[k], s[k+1])
end;
Ach ja, das mit dem Vertauschen heisst 'Ringtauschverfahren'. Doch, es gibt einen Namen für sowas. Es heisst deshalb so, weil der Austausch ringförmig geht: h <-a <- b <- h.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Minz

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

Re: Bubble-Sort

  Alt 28. Feb 2006, 16:08
jo wenn das so funktioniert muss dat wohl richtig sein

@netscanner
wegen den zwei schleifen: du hast gesagt du verstehst das ganze ab der for-schleife nicht wirklich also hab ich dir geschrieben, wie das ganze funktionieren soll.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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:49 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