Entwickler-Ecke
Algorithmen, Optimierung und Assembler - Matrix sortieren
Michael Farlaub - Sa 11.06.05 18:33
Titel: Matrix sortieren
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
Christian S.: Topic aus VCL (Visual Component Library) verschoben am Sa 11.06.2005 um 18:33
retnyg - Sa 11.06.05 19:06
such mal nach
QUICKSORT
Gausi - 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
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...)?
Michael Farlaub - 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!
Delphi-Quelltext
1: 2: 3:
| 1 3 3 7 2 1 mach 1 3 3 7 2 1 |
grüße
michael
delfiphan - So 12.06.05 12:51
Das Problem:
Gausi hat folgendes geschrieben: |
(was immer das auch heißen mag...)? |
hab ich leider auch. Und deine Antwort
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 - 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:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| repeat getauscht:=False; for i:=0 to Spaltenzahl-2 do begin if Istkleiner(MeinArray,i,i+1) then 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:
Allesquarks - 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!
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!