AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

mehrdimensionalen Array sortieren ???

Ein Thema von torud · begonnen am 13. Sep 2004 · letzter Beitrag vom 14. Sep 2004
Antwort Antwort
Seite 1 von 2  1 2      
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#1

mehrdimensionalen Array sortieren ???

  Alt 13. Sep 2004, 10:48
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:
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;
Für Tipps und Lösungsvorschlage wäre ich dankbar!
Danke
Tom
  Mit Zitat antworten Zitat
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#2

Re: mehrdimensionalen Array sortieren ???

  Alt 13. Sep 2004, 11:29
... es gibt doch so viele schöne sortieralgorihtmen "bubble sort" etc such doch mal hier im forum oder bei google!
  Mit Zitat antworten Zitat
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#3

Re: mehrdimensionalen Array sortieren ???

  Alt 13. Sep 2004, 12:57
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!
Danke
Tom
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#4

Re: mehrdimensionalen Array sortieren ???

  Alt 13. Sep 2004, 13:01
Echt nicht? Schau mal hier: Tutorial Sortier-Algorithmen I+ II
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#5

Re: mehrdimensionalen Array sortieren ???

  Alt 13. Sep 2004, 13:08
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.

Ich habe nicht den Hauch einer Ahnung, wie ich eine dieser Sort-proceduren zum Einsatz bringen soll. Irgendwie ist das dort auch nicht beschrieben.!???
Danke
Tom
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#6

Re: mehrdimensionalen Array sortieren ???

  Alt 13. Sep 2004, 13:14
??? Da ist doch auch immer eine mündliche Beschreibung dabei. Was verstehst du bei
Zitat von SelectionSort:
Finde zuerst das kleinste Element und tausche es gegen das an erster Stelle befindliche Element aus, finde danach das zweitkleinste Element und tausche es gegen das an zweiter Stelle befindliche Element aus und setze dies so lange fort, bis das gesamte Feld sortiert ist.
denn nicht
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#7

Re: mehrdimensionalen Array sortieren ???

  Alt 13. Sep 2004, 21:14
Hallo!

So, wie ich es sehe, wäre laut Beschreibung BubbleSort was für mich.!?

Delphi-Quellcode:
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;
Leider weiss ich echt nicht, wo ich wie den Code zum Einsatz bringen müsste, um meinen mehrdimensionalen DatenRecord zu sortieren...

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;
Danke
Tom
  Mit Zitat antworten Zitat
Benutzerbild von JasonDX
JasonDX
(CodeLib-Manager)

Registriert seit: 5. Aug 2004
Ort: München
1.062 Beiträge
 
#8

Re: mehrdimensionalen Array sortieren ???

  Alt 13. Sep 2004, 22:30
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;
Mike
Passion is no replacement for reason
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#9

Re: mehrdimensionalen Array sortieren ???

  Alt 13. Sep 2004, 22:30
Du kannst es doch so machen:
Delphi-Quellcode:
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
So kannst du dann übergeben, nach was sortiert werden soll.
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
Benutzerbild von JasonDX
JasonDX
(CodeLib-Manager)

Registriert seit: 5. Aug 2004
Ort: München
1.062 Beiträge
 
#10

Re: mehrdimensionalen Array sortieren ???

  Alt 13. Sep 2004, 22:41
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]
Mike
Passion is no replacement for reason
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:25 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz