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 } } }
Schau dir mal https://de.wikipedia.org/wiki/Insertionsort oder https://de.wikipedia.org/wiki/Mergesort und https://de.wikipedia.org/wiki/Merge-Algorithmen an
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?
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.
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.
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 | }
|
arr1_len = Länge des ersten Arrays arr2_len = Länge des zweiten Array
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...
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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.