![]() |
Mach es doch vorsichtshalber! mal so lange wie Einträge in der ListBox sind, also:
Delphi-Quellcode:
Grüsse, Daniel :hi:
for i := o to ListBox.Items.Count -1
|
Aber wie oft ich sortieren muss, ist unabhängig von der Anzahl der zu sortierenden Zahlen. Wenn ich z.B. nur 12 Zahlen habe, kann es sein, dass ich 4x sortieren muss. Wenn ich z.B. 100 zahlen habe, kann es sein, dass ich nur 3x sortieren muss. Den Vorgang einfach automatisch mehrmals wiederholen lassen, ist ja nicht wirklich die richtige Lösung. Da muss es doch noch eine bessere Möglichkeit geben.
Dein Vorschlag funktioniert zwar:
Delphi-Quellcode:
Nur kann man dann das Sortierverfahren nicht mehr als Quicksort bezeichnen. Es ist so bei großen Zahlenmengen wirklich extrem langsam :wink: :( :?:
for i := o to ListBox.Items.Count -1
|
Hier noch mal die aktuelle Version des Quellcodes. Es gibt immernoch das gleiche Problem: Damit die Liste komplett sortiert ist, muss ich das Sortierverfahren mehrmals anwenden. Vielleicht hat ja jemand noch ein paar Tipps.
Delphi-Quellcode:
procedure TForm1.Sortierverfahren4Click(Sender: TObject);
var n:integer; timer_s_ts,timer_e_ts:ttimestamp; procedure Quicksort(links,rechts:integer); var el,er,grenze: integer; hilfe:string; begin el:=links; er:=rechts; grenze:=strtoint(ListeSortiert.Items.Strings[links]); repeat while strtoint(ListeSortiert.Items.Strings[el])<grenze do el:=el+1; while strtoint(ListeSortiert.Items.Strings[er])>grenze do er:=er-1; if(el <= er) then begin hilfe:=ListeSortiert.Items.Strings[el]; ListeSortiert.Items.Strings[el]:=ListeSortiert.Items.Strings[er]; ListeSortiert.Items.Strings[er]:=hilfe; end; el:=el+1; er:=er-1; until el>=er; if (er > links) then QuickSort(links,er); if (el < rechts) then QuickSort(el,rechts); end; begin timer_s_ts:=DateTimeToTimeStamp(now()); Write; n:=ListeSortiert.Items.Count-1; Quicksort(0,n); timer_e_ts:=DateTimeToTimeStamp(now()); GebrauchteZeit.Text:=inttostr((timer_e_ts.Date*24*60*60*1000+timer_e_ts.Time)-(timer_s_ts.Date*24*60*60*1000+timer_s_ts.Time)); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:17 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