Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Wie schaffe ich es möglichst kurz dem Array a Werte zuzuweisen und das Array via System.out.print ausgeben zulassen? Ich hab das jetz schon länger als eine Stunde versucht, aber bei mir kommt nach dem ausführen einfach nichts raus - jetzt bin ich schon total durcheinander . Ist die Bubblesort Methode denn richtig implementiert?
Java:
public class Sort {
public static void main(String[] args) {
}
public static void sortieren(int[] a){
boolean done;
do {
done = true;
for (int i = 1; i < a.length; ++i){
// Wenn das Element(i-1) größer als Element(i) ist werden beide getauscht.
if (a[i-1] > a[i]) {
int temp = a[i-1];
a[i-1] = a[i];
a[i] = temp;
done = false;
}
}
}
while(!done);
}
}
erstens ist Dein Array 'a' beim der Übergabe an sortieren nicht gefüllt/initialisiert!
Dadurch KANN aber auch nichts sortiert werden.
Wozu überhaupt diese While-Schleife ??
Zudem erzeugst Du da eine Endlosschleife, weil Done NIE false wird!
erstens ist Dein Array 'a' beim der Übergabe an sortieren nicht gefüllt/initialisiert!
Dadurch KANN aber auch nichts sortiert werden.
Wozu überhaupt diese While-Schleife ??
Zudem erzeugst Du da eine Endlosschleife, weil Done NIE false wird!
Zum Thema:
Der BubbleSort ist auf den erstern Blick in Ordnung. In der inneren for-Schleife kannst du aber noch ausnutzen, dass beim jeweils k-ten Schleifendurchlauf die letzten k Elemente bereits sortiert sind. Dadurch gewinnst du in etwa einen Faktor 2 bei der Laufzeit.
Den Sortieralgorithmus hast du ja schon fertig.
Dir fehlt also die main Methode mit der Initialisierung der Testdaten, dem Aufruf der Sortierung und der Ausgabe des Ergebnisses.
Hier eine einfache Umsetzung des Problems:
Zuerst einmal Danke für eure Hilfe und besonderen Dank an Dompteur!
Drei Fragen für mein Verständnis:
-1. Könnte ich die Initialisierung vom Array auch an den Anfang meiner sortieren Methode verschieben?
Wenn ich schreibe a = {1, 2 , 4, 5} am Anfgang meiner Sortieren Methode gibst ein Fehler, weil ich im Header der Methode Sortieren ja schon int[]a habe - falsche Syntax bzw. nicht erlaubt?
Kann ich diese <TYP>[] <BEZEICHNER> = {Wert1, Wert2, Wert3 ...} zuweisung nur benutzen wenn ich mein Array auch gleichzeitig Deklarisiere?
-2. sortieren(a); Bedeutet dass die Methode sortieren auf a anwendet werden soll. Richtig?
-3. "java.util.Arrays.toString" sorgt dafür, dass das Ergebnis richtig ausgegeben wird?
Hier handelt es sich um die Kombination von Deklaration und Initialisierung.
Einer bereits deklarierte Array-Variable kannst du auf ähnliche Art und Weise ein neues Array zuweisen.
Mit dem oben beschriebenen Codestück könntest du dem Parameter a in der sortieren Methode auch ein neues Array zuweisen.
Ob das Sinn macht, sein dahingestellt.
Arrays ist eine Hilfsklasse und diese enthält eine Reihe von Methode zur Arraymanipulation.
toString erzeugt einen einigermaßen gut lesbaren String mit dem Arrayinhalt. Da du eine einfache Möglichkeit wolltest, habe ich diese genommen ;-)
Wenn du eine andere Form der Darstellung brauchst, musst du selbst in einer for-Schleife das Arrays entsprechend ausgeben.
-1. Könnte ich die Initialisierung vom Array auch an den Anfang meiner sortieren Methode verschieben?
Wenn ich schreibe a = {1, 2 , 4, 5} am Anfgang meiner Sortieren Methode gibst ein Fehler, weil ich im Header der Methode Sortieren ja schon int[]a habe - falsche Syntax bzw. nicht erlaubt?
Kann ich diese <TYP>[] <BEZEICHNER> = {Wert1, Wert2, Wert3 ...} zuweisung nur benutzen wenn ich mein Array auch gleichzeitig Deklarisiere?
Damit deklarierst und initialisiert Du gleichzeitig!
Es ist zwar auch eine Zuweisung, am nicht in dem Sinne ...