Anfängerproblem: Bubblesort, array mit n-Elementen

scar110

Grünschnabel
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...
Code:
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
 
Ich hätte hier eine Möglichkeit bubbleSort mit übergabe eines int[ ] falls dir das etwas nützt:
Code:
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;
                       }
                  }
             }
}
 
Zuletzt bearbeitet:
Falls noch interessiert. Hier mal eine Methode, die so benutzt wird:

PHP:
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!
 
Zuletzt bearbeitet:
Zurück