![]() |
Re: mehrdimensionalen Array sortieren ???
kann sein, ich hab mir jetzt nicht so genau angeschaut, wie das Array deklariert ist. :oops:
|
Re: mehrdimensionalen Array sortieren ???
Hallo, danke!
Ich habe Euren Vorschlag probiert und leider bekomme ich nun die Fehlermeldung, dass Data undeklariert ist. Folgendes mache ich bisher!
Delphi-Quellcode:
global habe ich deklariert
procedure TForm1.btn_sortby_heightClick(Sender: TObject);
var i,j,k,s:integer; HelpRecord : Array[0..9,0..99] of String; begin //myRecord in HelpRecord einlesen for i:=0 to 99 do begin for k:=0 to 9 do begin HelpRecord[k,i]:=myRecord[k,i]; end; end; //Bubblesort starts here s:=3; //bedeutet 3 = height For i:= high(myRecord[0]) downto low(myRecord[0]) Do For j:= low(myRecord[0]) To i Do If (Data[s, j-1] > Data[s, j]) Then SwapValues( j-1, j ); //in swapValues Tauschst du die ganze Zeile end;
Delphi-Quellcode:
Ich raffs einfach nicht :wall:
var
myRecord : Array[0..9,0..99] of String; |
Re: mehrdimensionalen Array sortieren ???
Schreib statt Data myRecord... :roll:
lass mich raten: er kenn SwapValues nicht? |
Re: mehrdimensionalen Array sortieren ???
yepp = genau, dass kennt er nicht!
|
Re: mehrdimensionalen Array sortieren ???
schreib sowas:
Delphi-Quellcode:
Müsste eigentlich klappen.
procedure TForm1.btn_sortby_heightClick(Sender: TObject);
var i,k,j,s:integer; //s ist die Spalte, nach der sortiert werden soll buff: string; begin //Bubblesort starts here For i:= high(myRecord[0]) downto low(myRecord[0]) Do For j:= low(myRecord[0]) To i Do If (myRecord[s, j-1] > myRecord[s, j]) Then Begin For k := low(myRecord) To high(myRecord) Do Begin buff := myRecord[k, j-1]; myRecord[k, j-1] := myRecord[k, j]; myRecord[k, j] := buff; end; end; end; Edit: Fehler ausgebessert |
Re: mehrdimensionalen Array sortieren ???
hallo und vielen dank,
pc ist abgeschmiert, kanns erst morgen testen |
Re: mehrdimensionalen Array sortieren ???
Moin,
du kannst unter Open Source auch mal nach meinem Programm schaun, müsste noch ziemlich weit oben stehen ;-) Da sind verschiedene Sortieralgos implementiert (derzeit Bubble-, Shell-, Insertion-, Selection Sort), die werden zeitlich und an Hand der Anzahl an Vergleiche verglichen. Die Methoden müsstest du noch kurz umschreiben, damit du sie mit mehrdimensionalen Arrays verwenden kannst. Sollte aber nicht all zu schwer sein, denn hier wurde dir das ja schon am Beispiel des Bubblesorts gezeigt.. |
Re: mehrdimensionalen Array sortieren ???
hier ist der Thread:
![]() |
Re: mehrdimensionalen Array sortieren ???
Hallo Alexander!
Vielen Dank! Ich werde es versuchen, weiss aber noch nicht, wann und ich bin mir auch noch nicht sicher, ob ich das mit dem Array nicht vielleicht doch besser irgendwie anders löse, da mir das alles viel zu aufwendig erscheint ich es anhand des Codes allein nicht verstehe. |
Re: mehrdimensionalen Array sortieren ???
Du könntest auch eine Liste nehmen...
Zum Sortierieren: Bubblesort ist eigentlich sehr langsam und daher nicht zu empfehlen. Man merkt es schon deutlich ab 5000 Einträgen. Hängt natürlich auch immer vom jeweiligen REchner ab.. Shellsort ist da schon wesentlich effektiver, natürlich noch nicht so effektiv wie Quicksort, aber dafür vermutlich leichter zu verstehen, da nicht rekursiv. Ich habe mir Shellsort selber erklärt an Hand ein paar wenigen Stichworten, dann ein wenig nachgedacht und den Source auf'm Blatt Papier im Pseudo-Code geschrieben und nach Delphi portiert... Das schaffst du bestimmt auch ;-) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:51 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