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
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.
 
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]);
      }
   }
}
 
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 🙁
 
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.
 
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];
}
 

Zurück
Oben