import java.io.*;
public class BubbleSort {
public static void sort(double[] array) {
// Wir nehmen erstmal an, dass das Array sortiert ist.
boolean sortiert = true;
do {
sortiert = true;
// Nun gehen wir das Array komplett durch...
for (int i = 1; i < array.length; i++) {
/*
* und vergleichen jedes Element mit dem linken Nachbar,
* darum fängt die for-Schleife auch mit 1 an und nicht mit 0.
*/
if (array[i - 1] < array[i]) {
/*
* Sollte das linke Element kleiner sein als das rechte,
* so werden diese beiden vertauscht.
*/
double tmp = array[i - 1];
array[i - 1] = array[i];
array[i] = tmp;
/*
* Und wir merken uns, dass das Array eben doch nicht sortiert war.
*/
sortiert = false;
}
}
/*
* Den obigen Code müssen wir nun so lange ausführen,
* bis keine Vertauschungen mehr nötig sind.
* Dies ist genau dann der Fall, wenn das array sortiert ist.
*/
} while (!sortiert);
/*
* Diese Methode braucht auch keinen Rückgabewert,
* da das übergebene Array modifiziert wird.
*/
}
// Hauptprogramm
public static void main(String[] args) throws NumberFormatException, IOException {
double[] test = {52.90 , 654.3,654.5,654.4,2,35,12,5,7,9};
/*
* abfragen ob in der Comandozeile Werte uebergeben worden sind?
* Ja, unser Programm mit diesen Daten füttern!
* Nein, wie gehabt mit der Test-Routine arbeiten
*/
if (args.length > 1) {
/*
* wir brauchen ja mindest 2 Werte, sonst können wir ja nix
* sortieren! ;)
*/
test = new double[args.length-1];
for (int i = 0; i < args.length; i++) {
test[i] = Double.parseDouble(args[i]);
}
} else {
System.out.println("Was moechten Sie tun?");
System.out.println("---------------------");
System.out.println("1 Einen Test starten");
System.out.println("2 Zahlen selbst eingeben");
System.out.println("---------------------");
System.out.print("Ihre Eingabe bitte: ");
BufferedReader buff = new BufferedReader(new InputStreamReader(System.in));
int eingabe = Integer.parseInt(buff.readLine());
switch (eingabe) {
case 1:
System.out.println("Testlauf wird gestartet");
break;
case 2:
for ( int i = 0; i < test.length; i++) {
System.out.print((i + 1)+". Zahl: ");
test[i] = Double.parseDouble(buff.readLine());
}
break;
default:
System.out.println("Ungültige Eingabe, Testlauf wird gestartet!");
}
}
sort(test);
for (int i=0; i<test.length; i++) {
System.out.println(test[i]);
}
}
}