![]() |
bubblesort funzt ni need help
Code:
kann mir jemand sagen was da dran falsch is ich krieg grad nix auf die reihe
procedure TForm1.sortbtnClick(Sender: TObject);
var i,j,n : integer; hilfe : string; begin f2.Items.Clear; n:=f1.Items.Count-1; for i:=0 to n do feld[i+1]:=f1.Items[i]; for i:=1 to n-1 do for j:=1 to n-1 do if feld[j]>feld[j+1] then begin hilfe:=feld[i]; feld[i]:=feld[j]; feld[j]:=hilfe; end; for i:=0 to n+1 do begin f2.Items.Add(feld[i+1]); end; end; danke schonmal vornweg |
Re: bubblesort funzt ni need help
Ist es richtig, dass das feld bei Dir ein Array of Integer ist?
Delphi-Quellcode:
Dann geht das obige nicht, hier versuchst Du einen String einen Integertypen zuzuweisen.
for i:=0 to n do feld[i+1]:=f1.Items[i];
Wenn dem so sein sollte, dann hilft Dir StrToInt(): Grüße Klaus |
DP-Maintenance
Dieses Thema wurde von "Matze" von "VCL / WinForms / Controls" nach "Sonstige Fragen zu Delphi" verschoben.
Das hat mit der VCL nichts zu tun. |
Re: bubblesort funzt ni need help
das isn array of string aber ich weiß ni was du denkst was ich umwandeln sollte
|
Re: bubblesort funzt ni need help
Außerdem tauschst Du wohl die falschen Elemente:
Zitat:
Delphi-Quellcode:
if feld[j]>feld[j+1] then
begin hilfe:=feld[j+1]; feld[j+1]:=feld[j]; feld[j]:=hilfe; end; |
Re: bubblesort funzt ni need help
lol na ja jetzt verschwinden alle elemente muss ich da dann j+1 ausgeben lassen
|
Re: bubblesort funzt ni need help
Zitat:
weiter unten nicht auf größer oder kleiner prüfen. Ich meine das kannst Du schon, macht in diesem Zusammenhang aber wenig Sinn. Oder willst Du Buchstaben sortieren? Grüße Klaus |
Re: bubblesort funzt ni need help
Hi,
Zitat:
Vielleicht solltest du dir mal diesen Thread durchlesen: ![]() Grüße vom marabu |
Re: bubblesort funzt ni need help
Hallo,
Dein Bubblesort ist falsch.
Delphi-Quellcode:
Du hast statt i+1 nur 1 genommen.
for i:=1 to n-1 do
for j:=i+1 to n-1 do Ich würde besser Quicksort nehmen, aber einer bestimmten Array-Zahl wird BubbleSort sehr langsam. Heiko |
Re: bubblesort funzt ni need help
und nicht
Delphi-Quellcode:
sondern
if feld[j]>feld[j+1] then
Delphi-Quellcode:
if feld[i]>feld[j] then
|
Re: bubblesort funzt ni need help
lol wenn ich aber schon bubblesort ni hinkrieg dann brauch ich mit quicksort erst ma gar ni anzufagen
so muss jetzt ma testen obs funzt |
Re: bubblesort funzt ni need help
Delphi-Quellcode:
er tauscht immer noch nicht oder gibts es nicht sortiert aus
var i,j,n:integer;
f:array[0..10]of string; h:string; begin n:=listbox1.Items.Count-1; for i:=0 to n do f[i+1]:=listbox1.Items[i]; for i:=1 to n-1 do for j := i+1 to n - 1 do if f[j]>f[j+1] then begin h:=f[j+1]; f[j+1]:=f[j]; f[j]:=h; end; for i:=0 to n+1 do begin listbox2.Items.Add(f[i+1]); end; |
Re: bubblesort funzt ni need help
Zwei geschachtelte for-Schleifen :gruebel:
Also ich kenne den Bubblesort nur so, wie auch hier beschrieben: ![]() |
Re: bubblesort funzt ni need help
Das sind aber auch 2 Schleifen :zwinker:
|
Re: bubblesort funzt ni need help
Zitat:
|
Re: bubblesort funzt ni need help
:lol:
|
Re: bubblesort funzt ni need help
Der Fehler ist: Du musst in beiden Schleifen bei 0 beginnen. Sparen kannst Du Dir nach dem ersten Durchlauf das letzte Element, das enthält garantiert den höchsten Wert.
|
Re: bubblesort funzt ni need help
Meines Erachtens muss die innere Schleife nicht bei 0 starten.
Delphi-Quellcode:
Es reicht wenn sie beim aktuellen Stand +1 der Vorgängerschleife startet.
for i:=0 to 9 do
for j := i + 1 to 9 do begin if data[i] > data[j] then begin dummy:=data[i]; data[i]:=data[j]; data[j]:=dummy; end; end; Grüße Klaus |
Re: bubblesort funzt ni need help
Delphi-Quellcode:
jo das wars danke
var i,j,n:integer;
f:array[0..10]of string; h:string; begin n:=listbox1.Items.Count; for i:=0 to n-1 do f[i+1]:=listbox1.Items[i]; for i:=1 to n do for j := 1 to n-1 do if f[j]>f[i] then begin h:=f[i]; f[i]:=f[j]; f[j]:=h; end; for i:=0 to n do begin listbox2.Items.Add(f[i+1]); end; mann mann mann is schon ganz schön schwer ^^ |
Re: bubblesort funzt ni need help
Angenommen, mein Array sieht so aus: 9,8,7,6,5,4,3,2,1
Nach dem ersten Durchlauf ist der Stand dann: 8,7,6,5,4,3,2,1,9 Also kannst Du Dir nicht das erste, sondern das letzte Element sparen. |
Re: bubblesort funzt ni need help
Zitat:
Delphi-Quellcode:
Listbox1.sorted:=TRUE;
|
Re: bubblesort funzt ni need help
Zitat:
Aber das mit 2 for-Schleifen zu machen - wer kommt auf sone Idee? Wenn man da eine bereits sortierte Liste reinsteckt, hat man genausoviele Durchläufe wie bei einer beliebig unsortierten. Das ist irgendwie Blödsinn, finde ich... |
Re: bubblesort funzt ni need help
Zitat:
|
Re: bubblesort funzt ni need help
Hier noch eine Bubblesort-Variante:
Delphi-Quellcode:
@Kaki: geht wohl eher um den Lerneffekt :zwinker:
procedure Bubblesort(const sList: TStrings);
var i,j,k: integer; getauscht: Boolean; procedure tausche(const a,b: integer); var tausch: string; begin tausch := sList[a]; sList[a] := sList[b]; sList[b] := tausch; getauscht := true; end; begin if sList.Count > 1 then begin sList.BeginUpdate; k := sList.Count - 2; i := 0; repeat getauscht := false; for j := 0 to k - i do if AnsiCompareStr(sList[j], sList[j + 1]) > 0 then tausche(j, Succ(j)); inc(i); until (i > k) or not getauscht; sList.EndUpdate; end; end; |
Re: bubblesort funzt ni need help
richtig erfasst ich weiß dass es eine funktion für das sortieren gibt aber es
geht darum den algo zu verstehen und verschiedene sortierverfahren unterscheiden zu können und das bubblesort umständlich und ineffizient ist ist ja auch zur genüge bekannt aber wer kein bubblesort kann wird weder insertionsort noch quicksort verstehen können MfG The_Doomed |
Re: bubblesort funzt ni need help
Zitat:
|
Re: bubblesort funzt ni need help
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:23 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