Entwickler-Ecke
Algorithmen, Optimierung und Assembler - Zahlen in memo sortieren aber selbst programmiert
läpi - Mi 06.09.06 08:25
Titel: Zahlen in memo sortieren aber selbst programmiert
hallo liebe freunde
ich soll in meinem programm zahlen in einer memo ausgeben dies habe ich auch geschafft.
allerdings soll ich jetzt diese zahlen per buttondruck nun sortieren und das alles nicht mit bubblesort oder sowas sondern mit einer selbst programmierten sortierung kann mir da jemand helfen ?
danke
Miri - Mi 06.09.06 08:29
äh, du sollst ohne sortier-algo sortieren?!
läpi - Mi 06.09.06 08:35
joa
aber wenn du einen guten algo kennst der recht einfach ist kannst du mir den schreiben?
Gausi - Mi 06.09.06 08:57
Einfach sind z.B. Bubblesort, Sortieren durch Auswahl, Sortieren durch Einfügen.
Schwieriger sind Heapsort, Mergesort, Quicksort.
Schwachsinnig ist Bogosort.
Fast alles weitere, was man sich so ausdenken kann, basiert im Wesentlichen auf diesen Algorithmen. Es mag zwar noch ein paar andere Verfahren geben, aber das sind imho die gängigsten.
Zu allen (außer evtl. dem letzten) gibt es hier im Forum Threads und fertigen Quelltext.
läpi - Mi 06.09.06 09:01
jo habe aber nochmal nachgefragt wir sollen wirklich ohne algo das machen
sprich mit eigenen variabelen die dann jedes zeile in meiner memo(dort gebe ich die zahlen aus)
miteinander vergleicht und dann die zahlen der reihenfolge nach ausgibt
DaKirsche - Mi 06.09.06 09:03
Darfst du nun einen Sortieralgorythmus verwenden oder nicht?
Also wenn du einen verwenden darfst, dann mache doch folgendes :
Prüfe, für die Anzahl der Zahlen - 1, ob die folgende Zahl kleiner ist und vertausche die gegebenenfalls.
Nehmen wir an, du tippst in jeder Zeile deines Memos eine Zahl und gibst insgesamt 100 Zahlen ein.
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:
| procedure TForm1.SortMemoList(); var ZahlenArray : array [0..100] of Integer; x,y : Integer; TempInt : Integer; Anzahl : Integer; begin Anzahl := Memo1.Lines.Count; For x := 0 to (Anzahl - 1) do begin ZahlenArray[x] := StrToInt(Memo1.Lines[x]); end; For x := 0 to (Anzahl - 2) do begin For y := 0 to (Anzahl - 2) do begin if ZahlenArray[y] > ZahlenArray[y+1] then begin TempInt := ZahlenArray[y+1]; ZahlenArray[y+1] := ZahlenArray[y]; ZahlenArray[y] := TempInt; end; end; end; For x := 0 to Anzahl -1 do begin Memo2.Lines.Add(IntToStr(ZahlenArray[x])); end;
end; |
Moderiert von
Gausi: Code- durch Delphi-Tags ersetzt
läpi - Mi 06.09.06 09:07
nein ich darf keinen verwenden ich soll einfach jede zeile mit der folgenden vergleichen wenn also die erste zahl höher ist als die nächste sollen die zahlen getauscht werden
ist die nächste zahle wierder höher muss wieder getauscht werden ist die zahl niedriger soll sie stehen bleiben und die nächste zahl muss überprüft werden
ALSO OHNE ALGO
nur mit einfachen variabeln die sich die zahlen merken
Miri - Mi 06.09.06 09:09
also,was du erklärst, ist ein algo und (wenn ich jetzt nicht total mitm schädel vor die wand gelaufen bin) is das bubble-sort...
Gausi - Mi 06.09.06 09:32
Jep, wenn man um diese Erklärung noch ein "Wiederhole solange, bis in einem Durchlauf keine Vertauschung mehr aufgetreten ist" drumrum packt, dann ist das Bubblesort.
Dass man das direkt auf den Einträgen in der Memo machen soll, wobei man ständig die darin enthaltenen Strings in Zahlen umwandeln muss, ist mir schleierhaft. Ebenso unverständlich ist es, dass man das Verfahren so streng an die Ausgabe koppeln soll.
Da wird mal wieder schlechter Programmierstil gelehrt...
DaKirsche - Mi 06.09.06 09:39
und wenn du es so kompliziert machen sollst, dann löse doch einfach die Schleife auf....
dann hast du nur einen langen Quelltext, der dasselbe macht, wie der kurze mit Algo.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 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!