2 sortierte Arrays zu einem Arrays zusammenführen

katchy

Aktives Mitglied
Hallöchen 🙂
also ich soll 2 sortierte Arrays zu einem zusammenfügen. Das neue zusammengeführte Array soll auch sortiert sein, heißt das Programm soll jede Position der beiden Arrays durchgehen und veregleichen welcher Wert kleiner ist und diesen dann im neuen Array eintragen....

Mein Code bislang:
Java:
public static int[] mischen(int[] menge1, int[] menge2){
        int []sortiert = new int [menge1.length+menge2.length];
       
        int zaehler = 0;
            for (int i = 0; i< menge1.length; i++){
                for (int j = 0; j<menge2.length; j++){
                    if (menge2[j]<menge1[i]){
                        sortiert [zaehler]= menge2[j];
                    }
                }
                sortiert[zaehler] = menge1[i];
                zaehler ++;
            }
    return sortiert;
    }
    public static void main (String[]args){
        int[]menge1 = {1,3,6,8};
        int[]menge2 = {2,4,5,7};
       
          int[]sortiert = mischen(menge1, menge2);
            for(int i=0; i<sortiert.length; i++) {
                System.out.print(sortiert[i]);
          }
    }
}

Er gibt mir jetzt immer 13680000 aus, was ja nicht ganz richtig ist^^....
Hilfe ;D

Liebe Grüße
Katchy
 
Pack mal dein
Java:
sortiert[zaehler] = menge1[i];
in einen else-Block nach dem if.

Sorry dass ist murks. Vergiss das xD
 
Ich glaube nicht, dass der Ansatz mit den verschachtelten for-Schleifen sinnvoll ist. Es ist wahrscheinlich besser, zunächst für beide Arrays mit 0 beginnend die jeweilige aktuelle Position zu speichern. Dann prüft man in einer Schleife, welches der Arrays den kleineren Wert an seiner aktuellen Position hat, speichert ihn im Ergebnis-Array und erhöht die aktuelle Position.
 
Wenn du es in ganz kurzer Form haben willste geht es auch so.
Java:
System.arraycopy(menge1, 0, sortiert, 0, menge1.length);
System.arraycopy(menge2, 0, sortiert, menge1.length, menge2.length);
Arrays.sort(sortiert);

Die ersten beiden befehle Kopieren deine Arrays menge1 & 2 hintereinander in sortiert und der letzte befehl soriert das Array dann.
 
@Elenteria
Müsste es in der zweiten Zeile nicht menge1.length()+1 heißen ? Sonst wird doch das Array an der Position menge1.length() zwei mal überschreiben.

Oder habe ich einen Gedanken Fehler?

Gruß,
Meeresgott
 
Nein. Ein Array der Länge n hat die Indizes 0, 1, 2, ..., n-1
d.h. dein Array menge1 benutzt eben die Indizes 0, 1, ... menge1.length()-1, daher wird menge2 auch direkt an Index menge1.length() geschrieben
 
Ja klar Java hat ja noch die Position 0 wie man auch in der ersten Zeile hätte sehen können.
Danke War wohl ganz auf dem falschen Laster 🙂
 

Zurück
Oben