# Anfängerproblem: Bubblesort, array mit n-Elementen



## scar110 (16. Juli 2005)

Hallo,

ich habe ein Problem bei der Bearbeitung folgender Aufgabe: Sortieren einer Liste mit einer unbekannten Anzahl von Elementen (max 100 Zahlen)
Hier ist mein Quellcode, aber irgendwie steckt hier der Wurm drin...

```
public static void sortn()
{
     int i=0,j=0,k;
     int n;                                   
     int[] list=new int[100];           
     boolean getauscht;
     n=i+1;                                        // bin mir unsicher
     do
     {
       list[i]=Konsole.readInt("Eingabe des Wertes: ");
       list[j]=list[i+1];
        do                        
        {
           getauscht=false;
           for(i=0;i<n;i++)
             for(j=i+1;j<n-1;j++)
                   if (list[i]<list[j])
                    {
                      k=list[i];
                      list[i]=list[j];
                      list[j]=k;
                      getauscht=true;
                    } 
             }while(getauscht==true);
     }while (list[i]!=0);    
     
     for(i=0;i<j;i++)
     System.out.println("Das Ergebnis ist: "+list[i]); 
 }
```

Vielen Dank im Voraus für eure Unterstützung...

ein verzweifelter JAVA-Anfänger
scar110


----------



## Magic23Wolf (17. Juli 2005)

Ich hätte hier eine Möglichkeit  bubbleSort mit übergabe eines int[ ] falls dir das etwas nützt:

```
public static void bubbleSort(int[] zahlen)
{
     for(int i= zahlen.length -2 ; i>=0;i--)
         {
            for(int j=0;j<= i; j++)
                  {
                     if(zahlen[ j ] > zahlen[ j+1])  
                      { // vertauschen der Zahlen
                        int hilf = zahlen[i];           
                        zahlen[ i ] = zahlen[ j ];
                        zahlen[ j ] = hilf;
                       }
                  }
             }
}
```


----------



## scar110 (17. Juli 2005)

Dank dir für den Vorschlag...werd es gleich mal probieren!


----------



## nick2005 (19. Juli 2005)

Falls noch interessiert. Hier mal eine Methode, die so benutzt wird:


```
public void sortiereNummer(int[] zahlen) {
        
       boolean check = false;

        while (!check) {

            check = true; // wenn check am ende true dann verlasse und du bist fertig

            for (int i = 0; i < zahlen.length - 1; i++) {

                int a = zahlen[i];
                int b = zahlen[i+1];

                if (a > b) { // vertausche die Paare, falls nötig
                    int hilf = b;
                    zahlen[i+1] = a;

                    zahlen[i] = hilf;
                    check = false; // setze check flase damit noch ein durchgang gemacht wird

                }

            }

        }
    }
```

Damit ist auch sichergestellt, dass falls die paare getauscht werden er das ganze nochmal durchläuft, um sicherzustellen ob wirklich alles seine Ordnung hat. Und nicht doch noch eins falsch eingeordnet ist. Das ist nämlich das tückische bei Bubblesort, dass du zwar die Zahlen vertauscht hast aber die Reihenfolge immer noch nicht ganz stimmt. Deshlab checkt man das ab.

Bis dann!


----------

