ERLEDIGT
JA
JA
ANTWORTEN
5
5
ZUGRIFFE
298
298
EMPFEHLEN
-
Hallo, wie kann ich in einem mehdimmensionalen Feld
in Java sortieren. in einem eindimensionalen Feld geht es.
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
public static void main(String[] args) { int[][] array = {{34,255,255,56},{127,204,11,34},{123,98,127,34},{34,34,127,17}}; int pos, posMin, min; for(int i=0;i<array.length;i++) { for(int j=0;j<array[i].length;j++) { posMin = array[0].length ; min = array[i][j]; System.out.println(posMin); System.out.println(min); } } Arrays.sort(array); //System.out.println('\n'); for(int i=0;i<array.length;i++) { for(int j=0;j<array[i].length;j++) //System.out.println(array[i][j]); }
Geändert von zerix (19.06.10 um 19:36 Uhr) Grund: Code-Tags eingefügt
-
Die Frage ist, wie du sortieren möchtest. Nur jeweils innerhalb der zweiten Dimension oder auch Dimensionen-übergreifend?
Ersteres könntest du leicht mit der Methode sort() aus der Klasse Arrays lösen:
-
Die Sortierung sollte Dimmensionsübergreifend erfolgen.
-
Hi,
für eine dimensionsübergreifende Sortierung könntest du alle Einträge in einem einzigen Array zusammenstellen und dieses dann mit Arrays.sort() sortieren...
aus diesem dann wieder ein solches 4x4-Grid zu erstellen ist ja dann auch kein Problem.
Oder hast du spezielle Wünsche an die dimensionsübergreifende Sortierung?
Grüße
Carron
-
Das wäre dann auch mein nächster Punkt, und zwar gibt es da auch wieder zwei Varianten. Erstens - die leichtere -, wenn man davon ausgeht, dass die zweite Dimension immer gleich groß ist, dann kannst du das so machen wie Carron sagt und die zweite Variante wäre schon etwas komplizierter, das könnte mit nem Stack klappen...
Erstmal ein kleines Beispiel zur ersten Variante:
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
int[][] array = {{34,255,255,56},{127,204,11,34},{123,98,127,34},{34,34,127,17}}; int secDimSize = array[0].length; int[] oneDimArray = new int[array.length*secDimSize]; for (int i = 0; i < array.length; i++) { for (int j = 0; j < secDimSize; j++) { oneDimArray[(i*4)+j] = array[i][j]; } } System.out.println(Arrays.toString(oneDimArray)); Arrays.sort(oneDimArray); System.out.println(Arrays.toString(oneDimArray)); for (int i = 0; i < array.length; i++) { for (int j = 0; j < secDimSize; j++) { array[i][j] = oneDimArray[(i*4)+j]; } } for (int[] secDim : array) { System.out.println(Arrays.toString(secDim)); }
-
Und hier noch eine Lösung für die zweite Variante und zwar mit einem Stack. Falls du nicht weißt was ein Stack ist, kannst du es dir in der Dokumentation anschauen.
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
//Wie du siehst, ist die zweite Dimension nicht überall gleich groß int[][] array = {{34,255,255,56,20},{127,204,11,34,2,24},{123,98,127,34},{34,34,127,17}}; Stack<Integer> x = new Stack<Integer>(); for (int[] secDim : array) { for (int value : secDim) { x.push(value); } } Collections.sort(x); //Die erste(auskommentierte) Variante sortiert vom groeßten zuerst //for (int i = 0; i < array.length; i++) { // for (int j = 0; j < array[i].length; j++) { // array[i][j] = x.pop().intValue(); // } //} //Diese Variante sortiert vom kleinsten zuerst for (int i = array.length - 1 ; i >= 0; i--) { for (int j = array[i].length - 1; j >= 0 ; j--) { array[i][j] = x.pop().intValue(); } } for (int[] secDim : array) { System.out.println(Arrays.toString(secDim)); }
Ähnliche Themen
-
String-Array nach Int-Array sortieren
Von Wolfy0013 im Forum JavaAntworten: 5Letzter Beitrag: 06.05.10, 17:05 -
Assoziatives Array (Zeilen Array) sortieren
Von Gladiator6 im Forum PHPAntworten: 10Letzter Beitrag: 03.06.09, 00:36 -
Array sortieren nach leeren Elementen sortieren, Reihenfolge beibehalten
Von trench140 im Forum PHPAntworten: 5Letzter Beitrag: 24.09.08, 00:10 -
Array sortieren -> 2tes array angleichen
Von ali-gator im Forum Flash PlattformAntworten: 2Letzter Beitrag: 27.10.06, 15:07 -
2d Array sortieren $array[name][0] sortieren nach [name]
Von Mr. FISHMAN im Forum PHPAntworten: 1Letzter Beitrag: 08.01.03, 22:10





Zitieren
Login





