Zwei Arrays zusammenführen

Neue Frage »

Auf diesen Beitrag antworten »
Zebsche Zwei Arrays zusammenführen

Meine Aufgabe ist es zwei geordnete Arrays so zusammenzuführen, dass das neue Array wieder ein geordnetes ist. Jedoch habe ich ein das Problem das die Längen des Arrays nicht zusammenpassen. ich hoffe mir kann jemand weiterhelfen
Mit freundlichen Grüßen

code:
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:
29:
30:
31:
package sample;

public class Aufgabe13 {
    public static void main(String[] args) {
        int j = 0, u = 0;
        int[] x = {1, 5, 7};
        int[] y = {2, 4, 5};
        int length = x.length + y.length;

        int[] z;
        z = new int[length];

        int i = 0;
        while (i < length) {

            if (x[j] <  y[u] && j <x.length) {
                z[i] = x[j];
                j++;

            } else {
                z[i] = y[u];
                u++;
            }
            i++;
        }


    }
}
 
Auf diesen Beitrag antworten »
Karlito

Hallo Zebsche,

die Längen der Arrays passen zusammen. u überschreitet aber den maximalen Index von y.

Gruß,

Karlito
Auf diesen Beitrag antworten »
as_string

Hallo!

Ich denke, wenn Du bei j schon beim Maximum angekommen bist, musst Du nur noch von y weitere nehmen, umgekehrt, wenn Du bei u beim Maximum bist, nur noch von x.
Du kannst die if-Bedingungen vielleicht dahingehend ändern, dass er immer zuerst überprüft, ob Du mit dem jeweiligen Index schon am Ende des entsprechenden Arrays bist (bzw. eigentlich ja darüber raus) und nur wenn nicht den Rest auswerten.

Gruß
Marco
Auf diesen Beitrag antworten »
Zebsche Frage

Ich verstehe nicht wo ich die Länge des arrays überschreibe
 
Auf diesen Beitrag antworten »
Karlito

Im else-Zweig wird u erhöht. Wird u zu groß, gibt es in Zeile 16 im nächsten Schleifendurchlauf einen Zugriffsfehler.

Gruß,

Karlito
Auf diesen Beitrag antworten »
Zebsche

dh ich sollte noch eine abfrage machen ob u<y.length?
Auf diesen Beitrag antworten »
as_string

Zitat:
Original von Zebsche
dh ich sollte noch eine abfrage machen ob u<y.length?

Ja, aber nicht nur im einen if für u, sondern auch im anderen für j. Das meinte ich eben.
Auf diesen Beitrag antworten »
Zebsche

Danke für euere Hilfe ohne euch wäre ichhoch lange gesessen


code:
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:
29:
30:
31:
32:
33:
package sample;

public class Aufgabe13 {
    public static void main(String[] args) {
        int j = 0, u = 0;
        int[] x = {1, 3, 4, 5, 5, 7};
        int[] y = {2, 4, 5};
        int length = x.length + y.length;

        int[] z;
        z = new int[length];

        for (int i = 0; i < length; i++) {

            if (u >= y.length || (j < x.length && x[j] <= y[u])) {
                z[i] = x[j];
                j++;
            } else {
                z[i] = y[u];
                u++;
            }
        }


        for (int b : z) {
            System.out.println(b);
        }
    }


}
Auf diesen Beitrag antworten »
Karlito

Daumen hoch Wink
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »