Wie 2 Arrays zusammenfügen und sortieren?

Gast #6657612
Lesenswert?

Hallo,

bin gerade dabei für die Uni ein Programm zu schreiben.
Das Programm soll
-2 Arrays erstellen
- Länge und höchste zahl sollen über die Konsole eingegeben werden
- Beide arrays sollen mit zufälligen zahlen gefüllt werden
- Anschließend beide arrays in ein 3. rein und das wiederum sortieren

Hab alles bis auf den letzten Punkt und verzweifle langsam wirklich.
Vielleicht weiß jemand wie es geht.
Das 3. Array soll direkt sortiert werden und nicht ersten erstellt und 
dann sortiert:


import java.util.Random;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;


public class App {

  public static void main (String[] args) throws IOException
  {
 BufferedReader reader = new BufferedReader(new 
InputStreamReader(System.in));

     System.out.println("Länge Array eingeben");


          String capacity1 = reader.readLine();
          int capacity = Integer.parseInt(capacity1);

          System.out.println("maxvalue eingeben");
          String maxValue1 = reader.readLine();
          int maxValue = Integer.parseInt(maxValue1);


          int [] a1 =    createRandomIntegerArray(capacity, maxValue);
          System.out.println();
          System.out.println("Unsortiertes erstes Array:");
          printArray(a1);



          int [] b1 =    createRandomIntegerArray(capacity, maxValue);
          System.out.println();
          System.out.println("Unsortiertes zweites Array:");
          printArray(b1);

          System.out.println();
          System.out.println("Sortiertes erstes Array:");
          bubbleSort (a1);
          printArray(a1);

          System.out.println();
          System.out.println("Sortiertes zweites Array:");
          bubbleSort (b1);
          printArray(b1);

          Zusammenfügen(a1, b1);

        Zusammenfügen(c);             //hier soll die Methode ausgeführt 
werden
  }





  public static int[] createRandomIntegerArray(int capacity, int 
maxValue)
  {
    Random rnd = new Random();
    int[] result = new int[capacity];
    for (int i = 0; i < result.length; i++)
    {
      result[i] = rnd.nextInt(maxValue) + 1;
    }
    return result;
  }



  public static void printArray(int[] Values)
  {
    for (int i = 0 ; i < Values.length ; i++)
    {
      System.out.print(Values[i]);
      System.out.print(" ");
      }
      }




  public static void bubbleSort (int[] Values)
      {
      {
      for (int i = Values.length; i>0; i--)
      {
      for (int c = 1; c < i; c++)
      {
      if (Values[c-1] > Values[c])
      {
      int buf = Values[c-1];
      Values[c-1] = Values [c];
      Values[c] = buf;
      }
      }
      }
      }
      }




  private static void Zusammenfügen(int[] a1, int[] b1)
  {
    int Länge = a1.length + b1.length;
    int [] c = new int[Länge];

    boolean bool=true;

    while(bool)
    {
      int i=0;
      int j=0;
      int k=0;
      if(a1[i]<b1[j])
      {
        c[k]=a1[i];
        i++;
        k++;
        if(i==a1.length)
        {
          return;
        }
        else
        {
          c[k]=b1[j];
          j++;
          k++;
          if(j==b1.length);
        }
      }
         //hier weiß ich nicht mehr weiter
    }
  }
}
Gast #6657789
Lesenswert?

Hatte ich letztens schon mal angemerkt.
Gerade an einer Uni müßte es noch ein Examplar von Niklaus Wirth 
"Algorithmen und Datenstrukturen" geben. Das war damals das Standardwerk 
mit allen Sortieralgorihmen.
Und früher gab es UBs, wo man sich Bücher ausleihen konnte. Haben die 
heute alle zu?
Gast #6657842
Lesenswert?

Ich.hasse.java! schrieb:
> bin gerade dabei für die Uni ein Programm zu schreiben.
> Das Programm soll
> [...]
> - Anschließend beide arrays in ein 3. rein und das wiederum sortieren

Wenn das die Aufgabenstellung ist und es keine weiteren Randbedingungen 
gibt. Java wird mindesten einen Sortieralgorithmus mitbringen zum 
Beispiel den in Collections. Einfach die Bibliotheksfunktion nutzen und 
viel Zeit und nerven sparen.

Sollte das dein Prof. nicht so prall finden, wird er sicher auf 
geeignete Literatur hingewiesen haben. Ansonsten das Buch „Algorithmen 
und Datenstrukturen“ ist eigentlich Pflicht für jeden Informatiker.
Gast #6657859
Lesenswert?

Imonbln schrieb:
> Ich.hasse.java! schrieb:
>> bin gerade dabei für die Uni ein Programm zu schreiben.
>> Das Programm soll
>> [...]
>> - Anschließend beide arrays in ein 3. rein und das wiederum sortieren
>
> Wenn das die Aufgabenstellung ist und es keine weiteren Randbedingungen
> gibt. Java wird mindesten einen Sortieralgorithmus mitbringen zum
> Beispiel den in Collections. Einfach die Bibliotheksfunktion nutzen und
> viel Zeit und nerven sparen.
>
> Sollte das dein Prof. nicht so prall finden, wird er sicher auf
> geeignete Literatur hingewiesen haben. Ansonsten das Buch „Algorithmen
> und Datenstrukturen“ ist eigentlich Pflicht für jeden Informatiker.

Wir sollen ohne irgendwelche "Addons" die Aufgabe schaffen.
Gast #6657941
Lesenswert?

Wenn die beiden Arrays bereits vorsortiert sind, dann z.B. so:

(C Code)
1
   // Array1 und Array2 sind vorsortiert
2
   // Array3 setzt sich (aufsteigend sortiert)
3
   // aus beiden Arrays zusammen
4

5
   // Laufindex für Array3 (Zielarray)
6
   size_t i = 0;
7

8
   // Laufindex für Array1
9
   size_t j = 0;
10

11
   // Laufindex für Array2
12
   size_t k = 0;
13

14
   while (1) {
15
      while ((j < arr1_len) &&
16
             (k >= arr2_len || arr1[j] <= arr2[k])) {
17
         arr3[i++] = arr1[j++];
18
      }
19

20
      while ((k < arr2_len) &&
21
             (j >= arr1_len || arr2[k] <= arr1[j])) {
22
         arr3[i++] = arr2[k++];
23
      }
24

25
      if (j == arr1_len && k == arr2_len)
26
         break;
27
   }
Gast #6658358
Lesenswert?

Ich.hasse.java! schrieb:

> Wir sollen ohne irgendwelche "Addons" die Aufgabe schaffen.

Bücher werden nicht als "Addons" eingestuft. Du kannst sie nicht einfach 
linken, sondern nur unter Einsatz deines Gehirns.

Genau das ist, was der Prof erreichen will. Nunja, der ist scheinbar 
Optimist und nimmt an, du hättest tatsächlich eins...
Gast #6658493
Lesenswert?

c-hater schrieb:
> Ich.hasse.java! schrieb:
>
>> Wir sollen ohne irgendwelche "Addons" die Aufgabe schaffen.
>
> Bücher werden nicht als "Addons" eingestuft. Du kannst sie nicht einfach
> linken, sondern nur unter Einsatz deines Gehirns.
>
> Genau das ist, was der Prof erreichen will. Nunja, der ist scheinbar
> Optimist und nimmt an, du hättest tatsächlich eins...

Find ich schon bizarr. Ein Buch ist ein Addon, und darf nicht verwendet 
werden. Leute im Forum zu finden, die die Arbeit für einen erledigen, 
dass ist legitim.

Was lernen Studenten heute? Kein Wissen und Inhalte, sondern wie man die 
Arbeit am besten verteilt. Das werden bestimmt mal großartige Chefs....
Beitrag #6658542 wurde von einem Moderator gelöscht.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren