# Java Bubblesort



## BlueJ-Noob (26. Apr 2010)

Hallo, ich brauche dringend Hilfe, wir müssen ein Programm bis morgen abgeben und ich komme nicht weiter.
Das ist die Aufgabe:
Die erste Aufgabe besteht darin, mit Hilfe der Klasse List (siehe Tauschverzeichnis) eine Sortiermethode für Zahlen (Integer) nach Art "BubbleSort" zu implementieren.
Dabei soll es möglich sein:

    * die Anzahl der zu sortierenden Zahlen im Konstruktor vorzugeben
    * den Erfolg des Sortierens testen zu lassen (eine eigene Methode testet, ob die Liste wirklich sortiert ist
    * eine Statistik zu sehen. Während des Sortirens wird automatisch per Strichlisten mitgezählt, wie oft zwei Zahlen verglichen wurden und wie oft zwei Zahlen vertauscht wurden. Diese Werte werden nach dem Sortieren in einer Datei ausgegeben, die ungefähr folgendermaßen aussehen könnte:

      ------
      Anzahl: 1000
      Vergleiche: 7654
      Vertauschungen: 5432

Weiterhin sollst du dir im Internet eine weitere Sortiermethode so anschauen, dass du sie ggf. (per kleinem Referat) vorstellen kannst oder einen Aufsatz darüber schreiben kannst.

Bisher habe ich die allgemeine Klasse LIST von Java benutzt die auf Array List aufbaut
und ein Teil von Bubblesort benutzt:

```
public class BubbleSort { 
   public static void sortiere(int[] x) {
      boolean unsortiert=true;
      int temp;
      
      while (unsortiert){
         unsortiert = false;
         for (int i=0; i < x.length-1; i++) 
            if (x[i] > x[i+1]) {                      
               temp       = x[i];
               x[i]       = x[i+1];
               x[i+1]     = temp;
               unsortiert = true;
            }          
      } 
   }
   
   public static void main(String[] args) {
      int[] liste = {0,9,4,6,2,8,5,1,7,3};
      sortiere(liste);
      for (int i=0; i<liste.length; i++) 
         System.out.print(liste[i]+" ");    
   } 
}
```
Über Hilfe wäre ich sehr dankbar... MFG BlueJ-Noob


----------



## Gast2 (26. Apr 2010)

Womit brauchst du denn Hilfe? Wo hast du denn den Bubblesort her? Aus einem andeen Forum oder selber geschrieben?

Fang mit Teil 1 an - definere einen Konstruktor mit parameter, entferne das static bei [c]public static void sortiere[/c] und ändere deinen Testcode und der main.


----------



## BlueJ-Noob (26. Apr 2010)

Ich brauche Hilfe bei der Statistik s. Aufgabe...


----------



## Gast2 (26. Apr 2010)

Bei der Berechnung oder bei der Ausgabe? Die Berechnung sollte ja ganz einfach sein wenn du weißt was der Algorithmus macht. Zähle die Durchläufe der for-Schleife mit und dann wie oft in der if-condition zwei elemente vertauscht werden.

Das ganze schreibst du dann in eine Datei


```
try{
    // Create file 
    FileWriter fstream = new FileWriter("out.txt");
        BufferedWriter out = new BufferedWriter(fstream);
    out.write("dein text");
    //Close the output stream
    out.close();
    }catch (Exception e){//Catch exception if any
      System.err.println("Error: " + e.getMessage());
    }
```


----------



## w0ddes (26. Apr 2010)

Ich würde das ganze so irgendwie machen: 

```
int vergleicheZaehler = 0;
    int vertauscheZaehler = 0;

    [....]

      while (unsortiert){
         unsortiert = false;
         for (int i=0; i < x.length-1; i++) 
            vergleicheZaehler++;
            if (x[i] > x[i+1]) {                      
               temp       = x[i];
               x[i]       = x[i+1];
               x[i+1]     = temp;
               vertauscheZaehler++;
               unsortiert = true;
            }          
      }
```

und dann am Ende halt diese "Zaehler" ausgeben, wie ist dir überlassen 

Edit: Da hängt man einmal 10 min am Telefon und schon is man zu spät  Fassy hat an sich genau die gleiche Lösung vorgeschlagen


----------



## BlueJ-Noob (27. Apr 2010)

Vielen dank für die Hilfe,
ich werde es ausprobieren  ...


----------

