![]() |
2 dimensionales Array sortieren die X'te...
Guten Abend,
ich hab nen Knoten im Hirn. Ich will einfach nur ein 2Dimensionales Array nach der 2. Dimension sortieren. Beim Googlen fand ich viel dazu... aber leider nichts was ich verstehe. Das meiste war entweder für Strings gedacht oder sah mir zu aufwändig aus, für die kleine Sache. Mein Array ist dynamisch und recht einfach:
Delphi-Quellcode:
es werden 2 Felder benutzt und mit Zahlen gefüllt:
meinArray : Array of Array of Integer;
Delphi-Quellcode:
Klappt bis hierhin wie es soll. Array wird gefüllt, kann ausgelesen werden... aber wie ich es nach dem zweiten Feld sortiere verstehe ich nicht.
meinArray[z][1] := StrToInt(beispielzahl1);
meinArray[z][2] := StrToInt(beispielzahl2); Mit BubbleSort soll das einfach sein, las ich. Aber ich weiß nicht wie ich das auf meinen Fall anwende... Gruß, Andreas |
AW: 2 dimensionales Array sortieren die X'te...
Sortieren benötigt immer 2 Grundoperationen: Vergleichen (Compare) und Vertauschen (Swap)
Versuche 2 Funktionen zu schreiben:
Delphi-Quellcode:
Damit kannst du nun beliebige Sortierverfahren ansetzen, die CompareXXXX() oder SwapXXXX() benützen.
function CompareMyArray(a,b:integer):integer;
const VERGLEICHINDEX = 0; begin if meinArray[VERGLEICHINDEX][a] > meinArray[VERGLEICHINDEX][b] then result := 1 else if meinArray[VERGLEICHINDEX][a] > meinArray[VERGLEICHINDEX][b] then result := -1 else result := 0; // Hinweis: mit Sign() geht es einfacher und eleganter end; procedure SwapMyArray(a,b:integer); var i : integer; begin for i := 0 to obergrenze do SwapInteger(meinArray[i][a], meinArray[i][b]); end; |
AW: 2 dimensionales Array sortieren die X'te...
Danke, das hilft schonmal die Logik ein wenig besser zu verstehen.
Allerdings hab ich das Array nicht global definiert. Es ist nur in einer kleiner Funktion existent, weil es nichts großes macht. Kann ich das Array irgendwie an die beiden Funktionen übergeben? |
AW: 2 dimensionales Array sortieren die X'te...
Wenn du dem Array ein Typ gibst kannst du es auch durchreichen:
Delphi-Quellcode:
Noch besser wäre es, wenn du das Array sammt Compare-, Swap- und Sortierfunktion in einer Klasse verpacken würdest.
Type
Tmein2DArray = Array of Array of Integer; // und später meinArray : Tmein2DArray; function CompareMyArray(X:Tmein2DArray;a,b:integer):integer; const VERGLEICHINDEX = 0; begin if X[VERGLEICHINDEX][a] > X[VERGLEICHINDEX][b] then result := 1 else if X[VERGLEICHINDEX][a] > X[VERGLEICHINDEX][b] then result := -1 else result := 0; // Hinweis: mit Sign() geht es einfacher und eleganter end; |
AW: 2 dimensionales Array sortieren die X'te...
Man, das klingt irgendwie aufwändiger als ich es von PHP kenne *g*.
Danke Dir, ich werde morgen weiter versuchen das hinzubekommen. Ich hätte nicht gedacht das es so ein Aufwand ist "mal eben" ein Array zu sortieren. |
AW: 2 dimensionales Array sortieren die X'te...
sx, das geht aber so einfacher:
Delphi-Quellcode:
type
TIntArray = Array of Integer; TInt2DArray = Array of TIntArray; var meinArray : TInt2DArray; i := <irgendEinIndex>; IrgendEineSortFunktionDieEinIntArrayAnnimmt(meinArray[i]); Zitat:
|
AW: 2 dimensionales Array sortieren die X'te...
Und streng genommen sind Arrays auch schon hart an ihrer Sinnhaftigkeitsgrenze wenn sortiert werden soll ;)
Da würde sich eher eine Liste anbieten, und statt der 2 Dimensionen ein Klässlein mit diesen als Feldern, so dass man mit einer schlanken Compare-Funktion schon in einer Hand voll Zeilen mehr am Ziel wäre. Zumal man den Sortieralgo nicht noch selber machen muss. |
AW: 2 dimensionales Array sortieren die X'te...
Zitat:
Meine Daten einfach in eine ListBox oder StringGrid packen und dort sortieren lasse. Das ganze nicht visible. Ist keine elegante Lösung, fühlt sich aber einfacher an *g*. |
AW: 2 dimensionales Array sortieren die X'te...
unsichtbare ListBox = TStringList :roll:
|
AW: 2 dimensionales Array sortieren die X'te...
Zitat:
Wofür gibts dann überhaupt Arrays? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:57 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