Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Bubblesort programmieren
Flyx - Mo 10.10.11 18:47
Titel: Bubblesort programmieren
Hallo,
ich möchte gerne eine Datei, die aus Wörtern besteht, mit dem Bubblesort sortieren. Ich öffne sie mit Opendialog und will
die sortierten Daten in ein Memo einfügen. Doch ich habe bis jetzt nur sehr wenige Programmiererfahrungen gemacht und bin mir
nicht sicher, wie ich es anstellen soll. Ich habe einen Quellcode geschrieben, der nun leider nicht funktioniert. Vielleicht kann mir jemand helfen und mir die Fehler im Programm zeigen und berichtigen?
Vielen Dank im Voraus :D
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61:
| unit Bubblesort;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls;
type TForm1 = class(TForm) Button1: TButton; OpenDialog1: TOpenDialog; Button2: TButton; Edit1: TEdit; Memo1: TMemo; procedure Button2Click(Sender: TObject); procedure Button1Click(Sender: TObject);
private public end;
var Form1: TForm1; Daten: array of string;
implementation
{$R *.DFM}
procedure TForm1.Button2Click(Sender: TObject); begin Opendialog1.execute; edit1.text:=opendialog1.filename; end;
procedure Bubblesort; var i,j:integer; speicher:string; begin for i:=0 to length(daten)-1 do for j:=i+1 to length(daten) do if Daten[i]>Daten[j] then begin speicher:=Daten[j]; Daten[j]:=Daten[i]; Daten[i]:=speicher; end; end;
procedure TForm1.Button1Click(Sender: TObject); var i:integer; begin bubblesort; for i:=0 to length(daten)-1 do begin memo1.lines.add(daten[i]); end;
end;
end. |
Moderiert von
Gausi: Delphi-Tags hinzugefügt
Gausi - Mo 10.10.11 18:55
Hallo und :welcome: in der Entwickler-Ecke,
Delphi-Quelltext
1: 2:
| for i:=0 to length(daten)-1 do for j:=i+1 to length(daten) do |
Ein Array geht von 0 bis Length-1. ;-)
Flyx - Mo 10.10.11 19:04
Das heißt, es müssten beide Male length-1 stehen?
Aber es funktioniert immer noch nicht...
Gausi - Mo 10.10.11 19:17
Laufen müsste es jetzt aber, d.h. der Compiler zeigt keinen Fehler mehr an, und das Programm stürzt nicht ab, oder?
Sortieren müsste der Algorithmus auch. Das ist zwar kein Bubblesort, aber wenn ich das richtig überblicke, sollte das Verfahren hier auch funktionieren.
bole - Mo 10.10.11 19:52
Das nix passiert liegt wahrscheinlich auch darn das Du die Daten aus dem File nicht in dein Array ladest. Du ruft zwar den Open Dialog auf, aber schreibst den Datenamen nur in ein Edit...
Gruss
Bole
Delphi-Laie - Fr 14.10.11 13:04
Gausi hat folgendes geschrieben : |
| Das ist zwar kein Bubblesort, aber wenn ich das richtig überblicke, sollte das Verfahren hier auch funktionieren. |
Welcher Sortieralgorithmus ist es denn dann?
Ich könnte fast schwören, daß es sich hierbei um Bubblesort handelt.
Oliver Marx - Fr 14.10.11 13:22
Hi,
Bubblesort kann es nicht sein, da bei Bubblesort immer benachbarte Daten verglichen werden. In diesem Fall handelt es sich um eine Art von Minsort. Allerdings wird beim echten Minsort bei jedem Hauptschleifendurchlauf maximal einmal getauscht.
Viele Grüße
Oliver
Delphi-Laie - Fr 14.10.11 13:31
Moderiert von
Narses: Komplett-Zitat des letzten Beitrags entfernt.
Ach so, das übersah ich, danke! Ein Glück, daß ich nicht vereidigt wurde.
Dann ist es eine Form des Simple-/Naiselsorts, wie sie auf sortieralgorithmen.de (und auch in meinem Sortierkino) enthalten ist.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!