Informatik 1 - 2D Array sortieren

Timm3012

Mitglied
20931974wk.jpg

Was wäre die einfachste Lösung für diese Aufgabe.
Grüße
Timm
 

Anhänge

  • Aufgabe 1.jpg
    Aufgabe 1.jpg
    40,8 KB · Aufrufe: 91

Saheeda

Top Contributor
Naja, ein 2D-Array ist ja im Grunde nur ein Array von Arrays, also aufgemalt ungefähr so:

[1][1.1][1.2]
[2][2.1][2.2]
[3][3.1][3.2]

Ich würde hier von oben nach unten durchgehen: erst schauen, ob alle 1. Stellen der Arrays gefüllt sind, danach alle 2. Stellen etc.
 

minzee

Bekanntes Mitglied
Nachdem mir langweilig war, habe ich eine Lösung versucht:
Java:
class Main
{
   public static void main(String[] args)
   {
      // Pferde:
      String a[] = {"jj", "", "mlp", "ko", "", "bs", "w", ""};
            
      int count = 4;
      for(int i = 0; i < 2; ++i)
      {
         int last = (i + 1) * count;
         
         // erstes leeres Feld suchen:
         int j = i * count;
         while(j < last && a[j] != "")
         {
            ++j;
         }
         // sortieren:
         for(int k = j; k < last; ++k)
         {
            if(a[k] != "")
            {            
               a[j] = a[k];
               a[k] = "";
               j = k;
            }
         }
      }
      
      // ausgeben:
      for(int i = 0; i < a.length; ++i)
      {
         System.out.println(a[i]);
      }
   }
}
 

Timm3012

Mitglied
Also ich würde als erstes eine Kopie erzeugen

public String [][] consilidate (String[1][3] Pferdestall) {

\\Kopie
String [][] sorted = new String [1][3];
for(int y=0; y<1;y++) {
for(int x=0; i<3;i++) {
sorted[x][y] = Pferdestall[x][y];
}
}

Mein Problem wäre jetzt das ich nicht weiß wie ich mit 2 Schleifen jedes Feld durchlaufe, überprüfe ob der Wert = null ist, überprüfe das dass nächste Objekt nicht gleich null ist und es dann aufrücken lasse.
Das hat hier auch gar nichts mit Faulheit zu tun ich hab einfach grade nur ein Verständnis Problem und das liegt größenteils an dem 2D Array.
Ich komme aus dem php bereich und da ist es viel einfacher :(
 

minzee

Bekanntes Mitglied
Bei einem sort werden normalerweise die ursprünglichen Daten sortiert. Es wird also keine Kopie angelegt und die dann zurückgegeben. Wenn du PHP kennst, kennst du vielleicht auch PHP: sort - Manual Dort ist das auch so.
 

Ruzmanz

Top Contributor
In PHP ist er auch nicht so stark ... Bei einem Array gibst du immer die tatsächliche Größe an. Wenn du auf einzelne Elemente zugreifen willst, musst du 1 abziehen.

Java:
		String[][] horses = // new String[2][4];
			{
				{"J", null, "M", "K"},
				{"B", null, null, "W"}
			};

In deinem Fall kannst du dir die erste Reihe rausgreifen, sodass du nur noch ein 1D-Array bekommst:

String firstRow = horses[0];
String secoundRow = horses[1];

// sortiere firstRow ...
// sortiere secoundRow ...

ODER besser:

for(int i = 0; i < horses.length; i++) {
// sortiere horses[1];
}
 

Neue Themen


Oben