zweidimensionales int Array sortieren

  • Themenstarter Gelöschtes Mitglied 70275
  • Beginndatum
G

Gelöschtes Mitglied 70275

Gast
Hallo, weiß jemand wie man ein zweidimensionales Array sortiert? Danke und viele Grüße.
 
G

Gelöschtes Mitglied 70275

Gast
Ich meinte, daß es nicht wichtig ist, ob auf- oder absteigend. Das Array ist groß und ich bezweifle, daß ich vordefinierte Methoden aus dem Link oben verwenden kann. Meine Frage ist ernst gemeint.
 
M

Mart

Gast
was würdest du tun wenn jemand bei dir zur tür rein kommt und sagt "ich will ein spiel haben, weis jemand wie das geht", was wäre deine reaktion? isn bischl mager die aussage ;)
 
G

Gelöschtes Mitglied 70275

Gast
int [][] arr = new int[100000][300000]; (es ist unwichtig ob absteigend oder aufsteigend).
Angenommen es sind relative große int-Werte drin. Wie kann man dieses Array sortieren? Da es zweidimensional ist, habe ich ein Problem mit dem Sortieren.
Zuerst ein eindimensionales Array daraus zu machen funktioniert in meinem konkreten Fall nicht.
 
G

Gelöschtes Mitglied 70275

Gast
... geht leider auch nicht, was ich gerade vor hatte. Hat nicht jemand zufällig einen Ansatz dafür - oder den Code?
 
M

Mart

Gast
mach einfach einen einfachen sort.. bubble sort zb...wenn du das ende eines arrays gefunden hast springst du in die nächste array zeile bis du nicht mehr weiter springen kannst

oder du modifizierst den merge sort da du die "häufchen" für den merge sort mehr oder weniger schon hast wenn du jedes einzelne sortierst
 
G

Gelöschtes Mitglied 70275

Gast
Nein - absolut nicht in einer DB.
Ja - das ist riesig. Habe die Werte willkürlich gewählt. Im kleinsten Falle komme ich auf etwa 80000 Einträge, und 30.000.000.000 ist auch die obere Grenze. Möglicherweise funktioniert es doch, sie in ein eindimensionales Array umzuschreiben und dann hätte ich nur 30.000.000.000 Vergleiche.
 
G

Gelöschtes Mitglied 70275

Gast
Ich brauche eigentlich keine vollständige Sortierung - wenn das so ist. Ich brauche das Minimum/Maximum des Array-Eintrages.
 

jari

Aktives Mitglied
Ok, gehen wir von 100.000 MIPS aus (etwa einem 5 GHz Prozessor) und dass ein Vergleich/Tausch nur 10 Instruktionen braucht.
Länge: 30.000.000.000
Komplexität: (n log n)
(30.000.000.000 log 30.000.000.000) / 10.000.000.000 = 104,41 Sekunden

Also könntest du in unter 2 Minuten sortieren. Problematisch wird es erst bei noch mehr als 30 Milliarden Elementen.
 
G

Gelöschtes Mitglied 70275

Gast
Gut, das wäre zwar nicht ok - ist aber so. Ich nehme den Weg über ein eindimensionales array und bestimme min/max. Hat jemand eine bessere Idee?
 
G

Gelöschtes Mitglied 70275

Gast
Und halt zurück, letztendlich brauche ich die Vergleiche doch - ... . Also, wenn es funktionieren würde ein array in vier Teile zu zerlegen - ist eine gute Idee - dann bin ich auch damit zufrieden. Ich müßte dann alle Daten einlesen, das Array teilen und dann wieder zusammensetzen. Nun ja, wie geht sowas bei einem zweidimensionalen array?
Ich habe mal ein Beispiel für ein kleines Array gemacht. Wie kann ich das Minimum bestimmen, bzw. sortieren? Ich sollte es erst nochmals selber versuchen - aber bin nun schon die gesamte Zeit am lesen ...
Java:
int[][] kleinesArr = {{1,7,3}, {1,2,3}, {9,2,3}, {1,2,3,4,5,6,7}, {1,2,3}, {1,2,3}};
 
G

Gelöschtes Mitglied 70275

Gast
Ich habe gemerkt, daß bei > 30000 Einträgen eines eindimensionalen Arrays schon eine Exception entsteht. Also teilen muß ich dies ohnehin.
 
G

Gelöschtes Mitglied 70275

Gast
Das Beispiel ist doof. Hier ein neues Beispiel:
Java:
int d = 7; int o=8;       
int[][] klArr = new int[d][o];
        klArr[0][0] = 5 ;
        klArr[0][1] = 1 ;
        klArr[0][2] = 2 ;
        klArr[0][3] = 2 ;
        klArr[0][4] = 1 ;
        klArr[0][5] = 5 ;
        klArr[0][6] = 5 ;
        
        klArr[1][0] = 5 ;
        klArr[1][1] = 1 ;
        klArr[1][2] = 2 ;
        klArr[1][3] = 2 ;
        klArr[1][4] = 5 ;
        klArr[1][5] = 5 ;
        
        klArr[2][0] = 5 ;
        klArr[2][1] = 1 ;
        klArr[2][2] = 1 ;
        klArr[2][3] = 5 ;
        klArr[2][4] = 5 ;
        klArr[2][5] = 1 ;
        klArr[2][6] = 5 ;
        
        klArr[3][0] = 5 ;
        klArr[3][1] = 6 ;
        klArr[3][2] = 1 ;
        klArr[3][3] = 5 ;
        klArr[3][4] = 7 ;
        klArr[3][5] = 1 ;
        klArr[3][6] = 5 ;
        
        klArr[4][0] = 5 ;
        klArr[4][1] = 1 ;
        klArr[4][2] = 1 ;
        klArr[4][3] = 8 ;
        klArr[4][4] = 5 ;
        klArr[4][5] = 1 ;
        
        klArr[5][0] = 5 ;
        klArr[5][1] = 1 ;
        klArr[5][2] = 1 ;
        klArr[5][3] = 5 ;
        klArr[5][4] = 5 ;
        klArr[5][5] = 1 ;
 
G

Gelöschtes Mitglied 70275

Gast
Danke an Alle für die vielen Beiträge. Ich versuche es und melde mich nochmals falls es nicht klappt. Brauche bestimmt zwei Tage, Bucket sort habe ich noch nie gehört.
 
G

Gelöschtes Mitglied 70275

Gast
@jari auch vielen Dank fürs Mutmachen und daß zwei Minuten schnell sind - ein Quantencomputer ist nichts für diese riesige Ding hier - bin gerade echt am verzweifeln
 

Oneixee5

Top Contributor
Ein Array zu sortieren ist simpel. Das Problem liegt in der 2. Dimension. Du hast bisher nicht beantwortet wann ein Unter-Array größer oder kleiner ist als ein anderes Unter-Array ist. Um mal mit einem Beispiel zu beginnen:
Java:
public static void sortArray(int arr[][]) {
    Arrays.sort(arr, new Comparator<int[]>() {

        @Override
        public int compare(int[] o1, int[] o2) {
            return Integer.valueOf(o1[0]).compareTo(Integer.valueOf(o2[0]));
        }

    });
}
Per: Arrays.sort(...) kann man ein Array sortieren. In deinem Fall ist aber ein gesonderter Comparator notwendig, da die zu sortierenden Elemente auch Arrays sind und das Interface Comparable nicht implementieren. Also muss man selbst eine Methode zum Vergleich bereitstellen. Die Methode compare(int[] o1, int[] o2) vergleicht jetzt als Beispiel das erste Element jedes Unter-Arrays und sortiert das Ober-Array entsprechend. Du könntest natürlich auch jeden anderen Algorythmus anwenden, welchen du dir ausdenkst, z.B.: Quersumme über das Unter-Array.
 
G

Gelöschtes Mitglied 70275

Gast
Hey Klasse, genau das brauche ich. Hätte nicht gedacht, daß meine Angaben nicht ausreichen. Sehe es nun aber ein. Jetzt habe ich eine Vorstellung, was ein zweidimensionales Array eigentlich ist.

Bei meinem Array haben alle Zeilen die gleiche Länge und alle Spalten haben die gleiche Länge. Spaltenlänge ist nicht gleich Zeilenlänge. Das macht es einfacher.
Ich denke mit einem Comparator wird es funktionieren.
Z. B. könnte ich mir vorstellen, zuerst die Spalten aufsteigend zu sortieren und dann einfach noch Zeile "0" aufsteigend zu sortieren. Das Minimum ist dann in a[0][0]. Dann würde ich die letzte Zeile aufsteigend sortieren und würde das Maximum in der letzten Zeile/Spalte erwarten.

Einen Comparator habe ich auch schon gefunden: https://www.java-forum.org/thema/2d-array-tabelle-alphabetisch-sortieren.42010/

Für mein zweites Teilproblem ist der Comparator auch geeignet. Welche Kriterien ich dann brauche muß ich einfach ausprobieren, kanns mir noch nicht vorstellen.
 
G

Gelöschtes Mitglied 70275

Gast
Du hättest erwartet wie sortiert werden soll? Genau da hatte ich die Vorstellung, daß ein zweidimensionales Array wie in der Ausgabe von System.out.print ... ist, also wie ein eindimensionales mit Zeilenumbruch nach jeweils x Einträgen. Also, das sind eher arrays in einem array. Dann ist mir klar, dass man mehr Angaben braucht.
Eigentlich ist Sortieren oben auch nicht korrekt. Ich brauche ja nur den Vergleich. Ich probiere das jetzt aus, dann sehe ich ob es funktioniert - ohne Sortierung.
 

Meniskusschaden

Top Contributor
Ich brauche eigentlich keine vollständige Sortierung - wenn das so ist. Ich brauche das Minimum/Maximum des Array-Eintrages.
Du willst nur das Minimum und Maximum im gesamten Array ermitteln? Warum willst du dann überhaupt sortieren? Iteriere doch einfach über alle Elemente, prüfe jeweils, ob das aktuell Betrachtete größer bzw. kleiner als das bisherige Maximum bzw. Minimum ist, merke es dir gegenfalls als neues Zwischenergebnis und du bist nach einem Durchlauf fertig.
 
G

Gelöschtes Mitglied 70275

Gast
Ja, das ist das eine Teilproblem, für das andere brauche ich den Comparator. Siehe oben: Comparator (Sortierung ist eigentlich nicht richtig).
Es ist eine Frage der Performance, wie genau es gemacht werden wird. Ich muß möglicherweise nicht das gesamte Array durchlaufen.
 
Zuletzt bearbeitet von einem Moderator:

Meniskusschaden

Top Contributor
🤔Es liegt bestimmt an mir, dass ich die Aufgabenstellung nicht begreife, denn einige andere haben es ja offenbar verstanden. Ich fasse mal meinen Kenntnisstand zusammen:

Es sollen mit Hilfe eines Sortieralgorithmus Minimum und Maximum aus einem großen zweidimensionalen Array ermittelt werden.
Minimum und Maximum reichen aber doch nicht ganz aus, sondern es wird zusätzlich noch etwas anders benötigt, das nicht definiert wird.
Die Sortierung braucht man aber doch nicht unbedingt, zumindest nicht vollständig und es besteht die Hoffnung nicht alle Elemente betrachten zu müssen.
Lösungsperspektiven können in der Überführung des 2D-Arrays in ein 1D-Array oder die logische Partitionierung in mehrere kleinere 2D-Arrays liegen.
Inzwischen ist auch klar, dass ein Comparator benötigt wird.
Nach einer Performanceoptimierung hat man dann die Lösung.
Die Kenntnis des zugehöriges Problem ist irrelevant.

Trifft das ungefähr den Punkt?;)
 

Neumi5694

Top Contributor
Es soll also von links nach rechts aufsteigend sortiert werden und danach von oben nach unten anhand der ersten Spalte, richtig?
Dann wäre garantiert das kleineste Element links oben (sonst aber ist nichts garantiert).
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
U Methoden Zweidimensionales Array mit Arrays.sort sortieren? Java Basics - Anfänger-Themen 22
C zweidimensionales Array sortieren Java Basics - Anfänger-Themen 6
D erste spalte eines zweidimensionales Array sortieren ??!! Java Basics - Anfänger-Themen 2
Ü Zweidimensionales Array in der ersten Zeile deklarieren Java Basics - Anfänger-Themen 13
S Prüfen ob ein zweidimensionales Array rechteckig ist Java Basics - Anfänger-Themen 4
sserio Iterierung über ein zweidimensionales Array Java Basics - Anfänger-Themen 16
sserio Zweidimensionales Array [][] wird untereinander ausgegeben Java Basics - Anfänger-Themen 14
P Zweidimensionales Array als Tabelle mit befüllten Zahlen Java Basics - Anfänger-Themen 10
Yasemin bahar zweidimensionales Array Java Basics - Anfänger-Themen 5
O zweidimensionales array in eine csv-Datei Java Basics - Anfänger-Themen 1
K Übergabe von Werten (zweidimensionales Array) aus einer Methode an zweidimensionales Array in main() Java Basics - Anfänger-Themen 3
I Java zweidimensionales array befüllen mit for-schleife Java Basics - Anfänger-Themen 2
J zweidimensionales Array Java Basics - Anfänger-Themen 1
S Zweidimensionales Array in ein eindimensionales Array speichern Java Basics - Anfänger-Themen 6
J Zweidimensionales array kopieren und in eindimensionales überführen Java Basics - Anfänger-Themen 304
X Java zweidimensionales Array Java Basics - Anfänger-Themen 5
J Zweidimensionales Array in CSV File exportieren Java Basics - Anfänger-Themen 3
F Erste Schritte zweidimensionales array Java Basics - Anfänger-Themen 2
J Erste Schritte zweidimensionales Array Muster befüllen. Java Basics - Anfänger-Themen 4
K drei eindimensionale Arrays in ein zweidimensionales Array Java Basics - Anfänger-Themen 10
K Zweidimensionales Array erstellen und zufällig mit 0 und 1 füllen Java Basics - Anfänger-Themen 11
P zweidimensionales Array anlegen und mit DB-Daten füllen Java Basics - Anfänger-Themen 14
W Erste Schritte Zweidimensionales Array - Gerade Zahlen anzeigen lassen Java Basics - Anfänger-Themen 3
L zweidimensionales char array reihenfolge ändern ? Java Basics - Anfänger-Themen 2
C ZweiDimensionales Array erstellen und Spiegeln Java Basics - Anfänger-Themen 1
H zweidimensionales array füllen Java Basics - Anfänger-Themen 6
D Zweidimensionales Array ( Java Basics - Anfänger-Themen 2
D Zweidimensionales Array (Länge) Java Basics - Anfänger-Themen 2
M Zweidimensionales Array aus Textdatei gewinnen Java Basics - Anfänger-Themen 6
M Zweidimensionales Array um 1 addieren Java Basics - Anfänger-Themen 3
B Zweidimensionales Array Elemente jeder Spalte zählen Java Basics - Anfänger-Themen 9
C Methoden Diagonalen am best. Punkt im zweidimensionales array finden Java Basics - Anfänger-Themen 3
S Zweidimensionales Array mit Diagonalen Java Basics - Anfänger-Themen 9
M Zugriffsproblem auf (zweidimensionales) Array in einer ArrayList Java Basics - Anfänger-Themen 15
C Datentypen Zweidimensionales Array mit String und int Java Basics - Anfänger-Themen 3
W Datentypen Zweidimensionales Boolean Array Java Basics - Anfänger-Themen 13
A Zweidimensionales Array Java Basics - Anfänger-Themen 3
M Zweidimensionales Array durchlaufen Java Basics - Anfänger-Themen 4
B Zweidimensionales Array durchsuchen und ändern Java Basics - Anfänger-Themen 8
J Zweidimensionales Array durch ToString ausgeben lassen Java Basics - Anfänger-Themen 21
B Zweidimensionales Array mit boolean Werten Java Basics - Anfänger-Themen 3
M Zweidimensionales Array befüllen Java Basics - Anfänger-Themen 4
C Zweidimensionales String Array initialisieren Java Basics - Anfänger-Themen 2
S Zweidimensionales Array mit Schleife summieren Java Basics - Anfänger-Themen 2
N zweidimensionales array größe bestimmen Java Basics - Anfänger-Themen 1
F Datentypen Zweidimensionales Array füllen Java Basics - Anfänger-Themen 6
S zweidimensionales ARRAY Java Basics - Anfänger-Themen 2
S zweidimensionales Array Java Basics - Anfänger-Themen 6
berti99 Zweidimensionales Array befüllen Java Basics - Anfänger-Themen 5
U Zweidimensionales Array mit Eindimensionalem Array Java Basics - Anfänger-Themen 7
J zweidimensionales Array einselen und ausgeben Java Basics - Anfänger-Themen 15
G Zweidimensionales Array - dynamisch Java Basics - Anfänger-Themen 4
M Zweidimensionales Array Java Basics - Anfänger-Themen 3
G zweidimensionales Array vergrößern Java Basics - Anfänger-Themen 3
M Zweidimensionales dynamisches Array füllen Java Basics - Anfänger-Themen 2
J zweidimensionales Array Java Basics - Anfänger-Themen 3
M Zweidimensionales String-Array initialisieren Java Basics - Anfänger-Themen 6
P zweidimensionales Array erstellen Java Basics - Anfänger-Themen 9
N zweidimensionales 10x10 Feld erstellen Java Basics - Anfänger-Themen 3
D aus 2 arrays ein zweidimensionales formen Java Basics - Anfänger-Themen 9
R dynamisches zweidimensionales Feld erzeugen Java Basics - Anfänger-Themen 8
V Zweidimensionales Ganzzahlfeld Java Basics - Anfänger-Themen 7
T Array verkleinern Java Basics - Anfänger-Themen 2
J Array aus Numberfield Eingaben Java Basics - Anfänger-Themen 7
D Array List mit Objekten sortieren Java Basics - Anfänger-Themen 2
onlyxlia Anzahl Random Zahlen mit Scanner abfragen und in Array speichern Java Basics - Anfänger-Themen 10
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
Thomas Uppe 2D Array Reihenfolge vermischen Java Basics - Anfänger-Themen 4
T array auslesen Java Basics - Anfänger-Themen 2
Nitrogames Variablen Variable aus JOptionPane Abfrage in Array einfügen Java Basics - Anfänger-Themen 4
moini Auf Array aus Superklasse zugreifen? Java Basics - Anfänger-Themen 2
J ArrayList in 2D-Array konvertieren. Java Basics - Anfänger-Themen 48
M NullPointerException: Cannot read the array length because "this.Kinder" is null Java Basics - Anfänger-Themen 1
P Wieso kann ich als Index für einen Array einen Char angeben? Java Basics - Anfänger-Themen 3
Finn_lol Fehlermeldung bei Schleife mit Array Java Basics - Anfänger-Themen 4
Proxy Chars vor array übergabe toLowerUpcase Java Basics - Anfänger-Themen 14
iAmFaiinez Primzahlen Tester ohne Array Java Basics - Anfänger-Themen 4
S array 2 dimensional treppe Java Basics - Anfänger-Themen 3
S Array 2x2 Blöcke mit 0 und 1 Java Basics - Anfänger-Themen 10
C Array von Klassen Java Basics - Anfänger-Themen 2
julian0507 2Dim-Array Spaltensummen Java Basics - Anfänger-Themen 1
XWing Doppelte Zahlen im Array Java Basics - Anfänger-Themen 8
melisax Java 2D-Array Tabelle Java Basics - Anfänger-Themen 4
melisax Java Array Wert an bestimmtem Index angeben Java Basics - Anfänger-Themen 14
W Items löschen aus String Array vom Custom Base Adapter Java Basics - Anfänger-Themen 2
Proxy Stack erweitern mit neuem Array falls der alte voll ist!? Java Basics - Anfänger-Themen 5
E Array, nächste Zahl zur 5 ausgeben, wie? Java Basics - Anfänger-Themen 42
J Array.list vergleichen Java Basics - Anfänger-Themen 1
W Java-Code mit Array Java Basics - Anfänger-Themen 14
D Reflections & Generisches Array Java Basics - Anfänger-Themen 4
T Array Java Basics - Anfänger-Themen 2
T Array Java Basics - Anfänger-Themen 15
T Wörteranzahl im Array zählen Java Basics - Anfänger-Themen 9
Ostkreuz Zweidimensionaler Array Index Java Basics - Anfänger-Themen 2
S String Array Buchstaben um einen gewissen Wert verschieben Java Basics - Anfänger-Themen 4
R Images aus einem Array ausgeben Java Basics - Anfänger-Themen 3
R 2d Array individuell machen Java Basics - Anfänger-Themen 4
D 2D Char Array into String Java Basics - Anfänger-Themen 2
J Array Median bestimmen Java Basics - Anfänger-Themen 6
S Array Maximum bestimmen mit for und foreach Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben