Autor Beitrag
Michael Farlaub
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 18


D6 PE, Indy 9
BeitragVerfasst: Sa 11.06.05 18:33 
grüß euch

ich möchte eine matrix (also ein 2d array) nach der ersten oder zweiten dimension sortieren.(alles zahlen).

gibs da vielleicht schon einen code?



grüße

michael


Moderiert von user profile iconChristian S.: Topic aus VCL (Visual Component Library) verschoben am Sa 11.06.2005 um 18:33

_________________
Was ist denn jetzt los?
retnyg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Sa 11.06.05 19:06 
such mal nach Suche in: Delphi-Forum, Delphi-Library QUICKSORT

_________________
es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8548
Erhaltene Danke: 477

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Sa 11.06.05 22:52 
Ich versteh noch nicht ganz, was du machen willst. Möchtest du jede Spalte bzw. Zeile einzeln sortieren, also z.B. aus
ausblenden Quelltext
1:
2:
3:
1 3 2        1 2 3        
6 5 4  mach  4 5 6 
8 7 9        7 8 9

oder möchtest du beim Sortieren ein Spalte bzw. eine Zeile als Ganzes betrachten, und die "kleinste Zeile" nach oben schreiben (was immer das auch heißen mag...)?

_________________
We are, we were and will not be.
Michael Farlaub Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 18


D6 PE, Indy 9
BeitragVerfasst: So 12.06.05 12:28 
hi gausi.

danke für dein posting

Zitat:
oder möchtest du beim Sortieren ein Spalte bzw. eine Zeile als Ganzes betrachten, und die "kleinste Zeile" nach oben schreiben


genau so!


ausblenden Delphi-Quelltext
1:
2:
3:
1 3       3 7          
2 1  mach 1 3    
3 7       2 1




grüße

michael

_________________
Was ist denn jetzt los?
delfiphan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2684
Erhaltene Danke: 32



BeitragVerfasst: So 12.06.05 12:51 
Das Problem:
user profile iconGausi hat folgendes geschrieben:
(was immer das auch heißen mag...)?
hab ich leider auch. Und deine Antwort
user profile iconMichael Farlaub hat folgendes geschrieben:
genau so!
hilft leider auch nicht weiter.

Könntest du uns definieren, wann für dich eine Zeile "grösser" ist als eine andere?

Wann gilt also:
ZeileI < ZeileJ

Da gibt es mehrere Möglichkeiten:

Sortierung nach Spalte K:
ZeileI < ZeileJ   <=>   ZeileI[K] < ZeileJ[K]

Sortierung nach Länge des Zeilenvektors:
ZeileI < ZeileJ   <=>   ZeileI[1]^2+ZeileI[2]^2+ZeileI[3]^2 < ZeileJ[1]^2+ZeileJ[2]^2+ZeileJ[3]^2

...

//Edit: Durch Pseudocode ersetzt
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8548
Erhaltene Danke: 477

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: So 12.06.05 12:56 
Wann ist denn eine Zeile kleiner als eine andere? Das Algorithmische Grundgerüst zum Sortieren könnte z.B. so aussehen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
repeat
  getauscht:=False;
  for i:=0 to Spaltenzahl-2 {oder Zeilenzahl} do
  begin
    if Istkleiner(MeinArray,i,i+1then
    begin
       vertausche(MeinArray,i,i+1);
       getauscht:=true;
    end;
  end;
until getauscht=False

Du musst dann nur noch die Funktionen/Prozeduren Istkleiner und vertausche entsprechend programmieren.

Ist zwar nicht Quicksort, aber für so relativ kleine Sachen reicht der Bubblesort immer noch aus :wink:

_________________
We are, we were and will not be.
Allesquarks
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 510

Win XP Prof
Delphi 7 E
BeitragVerfasst: Mo 13.06.05 22:22 
Falls Du eine mathematische Matrix meinst veränderst du damit manchmal Eigenschaften wie den Wert der Determinanten.
Wenn du ganze Spalten austauschst verändert das nur das Vorzeichen!