Hallo!
Bin total verwirrt....
Mein Programm erstellt ein zufällig generiertes Array und sortiert dies anschließend mit MERGE-SORT!
Das Programm funktioniert auch bis auf eine Kleinigkeit...
Am Ende hat das sortierte Array einen Eintrag = 0 der vorher net im unsortierten Array war... hab schon überall System.out.println's gesetzt um den Fehler zu finden aber irgendwie hab ich kein System darin gefunden o0
Vll is auch irgendwo eine Zählschleife falsch... wäre supi wenn mir jmd helfen könnte den Fehler zu finden... muss morgen das Programm abgeben!!!
P.S.:
nicht wunder das die Kommentare teils auf Englisch teils auf Deutsch sind... machen die Aufgaben immer zu 2. und mien Kollege kommetniert grundsätzlicha auf Deutch wohingegen ich Énglisch bevorzuge... am Ende übersetzt ich sein dann noch ins Englische aber das hab ich bisher noch ent gecschaftt
Bin total verwirrt....
Mein Programm erstellt ein zufällig generiertes Array und sortiert dies anschließend mit MERGE-SORT!
Das Programm funktioniert auch bis auf eine Kleinigkeit...
Am Ende hat das sortierte Array einen Eintrag = 0 der vorher net im unsortierten Array war... hab schon überall System.out.println's gesetzt um den Fehler zu finden aber irgendwie hab ich kein System darin gefunden o0
Vll is auch irgendwo eine Zählschleife falsch... wäre supi wenn mir jmd helfen könnte den Fehler zu finden... muss morgen das Programm abgeben!!!
P.S.:
nicht wunder das die Kommentare teils auf Englisch teils auf Deutsch sind... machen die Aufgaben immer zu 2. und mien Kollege kommetniert grundsätzlicha auf Deutch wohingegen ich Énglisch bevorzuge... am Ende übersetzt ich sein dann noch ins Englische aber das hab ich bisher noch ent gecschaftt
Code:
// is needed for generating random Integers
import java.util.Random;
public class SortiereRandomArray {
//declaration of variables
static int numberOfElements = 25;
static int [] array = new int[numberOfElements];
//Generates a random Integer-Array
public static int[] createArray () {
for (int i = 0; i < numberOfElements-1 ; i++) {
Random arrayElement = new Random();
/* The message "nextInt();" takes no parameters, and returns the
* next integer in the generator's random sequence. Any Java integers,
* positive or negative may be returned. Integers returned by this message
* are uniformly distributed over the range of Java integers.
*/
array[i] = arrayElement.nextInt();
System.out.println(array[i]);
}
System.out.println();
System.out.println();
return array;
}
static void sortiere (int[] zahlen, int left, int right) {
int i, j, k;
int [] arrayTmp = new int[zahlen.length];
if (right > left) {
int middle = (right + left) / 2;
sortiere (zahlen, left, middle);
sortiere (zahlen, middle + 1, right);
//starts one position after middle and goes to the end
for (i = middle + 1; i > left; i--) {
arrayTmp[i - 1] = zahlen[i - 1];
}
//traegt ersten 3 Elemente ein (0. Array wird nicht genutzt)
for (j = middle; j < right; j++) { //von Mitte bis Ende
arrayTmp[right + middle - j] = zahlen[j + 1]; //traegt in umgekehrter Reihenfolge letzten 3 ein
}
for (k = left; k <= right; k++) { //laeuft durch gesamtes Array
if (arrayTmp[i] < arrayTmp[j]) { //wenn i (1) kleiner ist als j (r)
zahlen[k] = arrayTmp[i++]; //i in k schreiben und i um eine erhoehen
}
else { //ansonsten
zahlen[k] = arrayTmp[j--]; //j in k schreiben und j um 1 verkleinern
}
}
}
}
static void sortiereProg (int[] zahlen) {
sortiere (zahlen, 0, zahlen.length - 1); // ruft sortiere auf
}
public static void main(String [] args) {
createArray ();
sortiereProg(array);
for (int l = 0; l < (array.length - 1); l++) {
System.out.println(array[l]);
}
}
}