![]() |
mehrdimensionalen Array sortieren ???
Hallo Leute!
Ich habe mal wieder ein mittelschweres Problem! Ich habe einen mehrdimesionalen Array, den ich je nach Userwunsch sortieren will! Folgendes Beispiel: MyData : Array[0..9,0..49] of String; Dieser Array stellt ein Datengrid dar. Der erste Array ist sozusagen der interne Feldtyp und der Zweite ist dann für den jeweiligen Inhalt zuständig. Der erste Array könnte also intern wie folgt strukturiert sein. 0 steht für bezeichnung 1 steht für preis 2 steht für breite 3 steht für höhe ich möchte nun je nach Userwunsch den Array intern sortieren. Nach Name, oder nach breite oder Höhe (integer), weiss aber nicht, wie. Folgendes habe ich schon mal vorbereitet.
Delphi-Quellcode:
Für Tipps und Lösungsvorschlage wäre ich dankbar!
procedure TForm1.btn_sortby_heightClick(Sender: TObject);
var i,k:integer; HelpRecord : Array[0..9,0..49] of String; begin //myRecord in HelpRecord einlesen for i:=0 to 49 do begin for k:=0 to 9 do begin HelpRecord[k,i]:=myRecord[k,i]; myRecord[k,i]:=''; // Originalarray wird gleich leer gemacht end; end; //und hier müsste dann myRecord sortiert wieder befüllt werden //nur wie??? was wenn es mehrere gleiche höhen gibt? end; |
Re: mehrdimensionalen Array sortieren ???
... es gibt doch so viele schöne sortieralgorihtmen "bubble sort" etc such doch mal hier im forum oder bei google!
|
Re: mehrdimensionalen Array sortieren ???
Hallo!
Danke für den Tipp! Leider habe ich nicht finden können, wo eine gute Erklärung mitgelierfert wird, oder was ich auf Anhieb verstehe! |
Re: mehrdimensionalen Array sortieren ???
Echt nicht? Schau mal hier:
![]() |
Re: mehrdimensionalen Array sortieren ???
Also ich hatte in der Schule keine Informtaikunterricht und habe keine Ahnung von BubbleSort usw. und so wie dieses Tut. aufgebaut wird das wohl auch in Zukunft so bleiben. :oops:
Ich habe nicht den Hauch einer Ahnung, wie ich eine dieser Sort-proceduren zum Einsatz bringen soll. Irgendwie ist das dort auch nicht beschrieben.!??? |
Re: mehrdimensionalen Array sortieren ???
??? Da ist doch auch immer eine mündliche Beschreibung dabei. Was verstehst du bei
Zitat:
|
Re: mehrdimensionalen Array sortieren ???
Hallo!
So, wie ich es sehe, wäre laut Beschreibung BubbleSort was für mich.!?
Delphi-Quellcode:
Leider weiss ich echt nicht, wo ich wie den Code zum Einsatz bringen müsste, um meinen mehrdimensionalen DatenRecord zu sortieren...
Procedure BubbleSort;
var i,j : Integer; Begin For i:= N downto 1 Do For j:= 1 To i Do If (Data[j-1] > Data[j]) Then SwapValues( j-1, j ); End;
Delphi-Quellcode:
procedure TForm1.btn_sortby_heightClick(Sender: TObject);
var i,k:integer; HelpRecord : Array[0..9,0..49] of String; begin //myRecord in HelpRecord einlesen for i:=0 to 49 do begin for k:=0 to 9 do begin HelpRecord[k,i]:=myRecord[k,i]; myRecord[k,i]:=''; // Originalarray wird gleich leer gemacht end; end; //und hier müsste dann myRecord sortiert wieder befüllt werden BubbleSort //tja Parameter gibts keine, also wie und was????? //laut obiger Beschreibung müsste ich, wenn ich nach Höhe sortieren wollte, //im dem ersten array nach dem 3 Eintrag sortieren end; |
Re: mehrdimensionalen Array sortieren ???
Delphi-Quellcode:
procedure TForm1.btn_sortby_heightClick(Sender: TObject);
var i,k,s:integer; //s ist die Spalte, nach der sortiert werden soll begin //Bubblesort starts here 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; |
Re: mehrdimensionalen Array sortieren ???
Du kannst es doch so machen:
Delphi-Quellcode:
So kannst du dann übergeben, nach was sortiert werden soll.
case SortNach of
Höhe : x:=1; Breite : x:=2; Preis : x:=3; end; bla; if Data[j-1,x] < Data[j,x] then swap |
Re: mehrdimensionalen Array sortieren ???
Er könnt auch den Buttons das entsprechende Tag geben und dann x über TButton(Sender).Tag zuweisen, ging noch besser, denn dann kann er alle Button-ereignisse in eins packen.
ach ja @Toxman ich glaub es is Data[x, j], nicht Data[j, x] :zwinker: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:21 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 by Thomas Breitkreuz