import java.util.concurrent.ThreadLocalRandom; //Wichtig für die Erstellung eines zufälligen Wertes. public class BubbleSort { public static void main(String args[]) { int[] myArray = new int[100]; //Array mit 100 Elementen erstellen. int temp = ThreadLocalRandom.current().nextInt(1, 101); //Einen zufälligen Wert erstellen: Hier gibt ThreadLocalRandom.current().nextInt(Min, Max+1) einen zufälligen int-Wert. for (int i = 0 ; i < myArray.length ; i++) //For-Schleife von 0 bis 99. "array.length" gibt die Anzahl der Elemente im Array als int-Wert. { if (myArray[i]==0) { myArray[i] = temp; //Wenn ein "leeres" Element im Array gefunden wird, soll stattdessen "temp" geschrieben werden, i = -1; //danach soll die For-Schleife neu wiederholt werden. (Am Ende dieses Vorganges wird der Wert von i automatisch um 1 erhöht) temp = ThreadLocalRandom.current().nextInt(1, 101); //Ein neuer Wert für temp ist empfohlen, um unnötigen Wiederholungen zu vermeiden, da der alte Wert schon im Array ist. } else if (myArray[i] == temp) { temp = ThreadLocalRandom.current().nextInt(1, 101); //Wenn der gleich zufällige Wert gefunden wird, soll ein neuer Wert erstellt werden, i = 0; //und die For-Schleife nochmal vom Anfang wiederholt werden. } } for (int n = 0 ; n < myArray.length ; n++) //Arrayelemente anzeigen. { if (myArray[n] > 9) System.out.print(myArray[n] + " "); //Jede Zahl soll zwei Charakter plätze haben. else System.out.print(myArray[n] + " "); //d.h. Wenn die Zahl gleich oder kleiner als 9 ist, soll ein zusächtliches leerzeichen geschrieben werden. } System.out.println();
boolean swap = false; //Brauchen wir später um zu prüfen, ob weitere Sortierungen nötig sind.
for (int x = myArray.length-1 ; x >= 0 ; x--) //Bubble Sort: { for (int y = 0; y < x ; y++) { if (myArray[y] > myArray[y+1]) //Tausch von zwei Elementen ohne Erstellung einer zusächtlichen Variable. { myArray[y] = myArray[y] + myArray[y+1]; //Als Beispiel: die Inhalte von Element_1 und Element_2 tauschen: myArray[y+1] = myArray[y] - myArray[y+1]; //Element_1 = A | Element_2 = B myArray[y] = myArray[y] - myArray[y+1]; //Element_1 = A + B | Element_2 = B swap = true; //Element_1 = A + B | Element_2 = (A + B) - B = A } //Element_1 = A + B - (A) = B | Element_2 = B } if (!swap) break; //Wenn es keine Wiederholungen stattgefunden haben, soll die Schleife beendet werden } for (int n = 0 ; n < myArray.length ; n++) //Arrayelemente nach Sortierung anzeigen. { if (myArray[n] > 9) System.out.print(myArray[n] + " "); else System.out.print(myArray[n] + " "); } } }