Bubblesort-Algorithms

Hallo1234

Bekanntes Mitglied
Hallo, die Aufgabe verlangt, dass 10 Zahlen absteigend sortiert werden. Das soll mit Bubblesort geschehen. Allerdings scheitere ich schon bei der Ausgabe der eingegeben Zahlen. Das Ganze sieht dann so aus:
1619349168186.png
Was muss ich verändern, damit mir die Zahlen erst am Ende ausgegeben werden und es dann keine Nullen mehr sind?

Java:
    public static void gibZehnZahlenEin() {
        Scanner s = new Scanner(System.in);
        
        int zahl = 0;
        int[] zehnZahlen = new int[11];
        for(int i=1; i<zehnZahlen.length; i++) {
            System.out.println("Geben Sie die "+i+". Zahl ein: ");
            zahl = s.nextInt();
            int rueckgabe = sortiereZahlen(zehnZahlen, i);
        
        }
        
}
    public static int sortiereZahlen(int[] zehnZahlen, int durchlaeufe) {
        int rueckgabe = 0;
        System.out.println(zehnZahlen[durchlaeufe]);
        return rueckgabe;
    }
 
K

kneitzel

Gast
Hier ist mein Ratschlag immer, dass man so Dinge weiter unterteilt. Dazu bieten sich hier Methoden an:
Du kannst z.B. eine Methode zahlenEingeben erstellen. Dann hast Du übersichtlichen Code a.la.:

Java:
zahlenEingeben(zehnZahlen);
zahlenSortieren(zehnZahlen);
zahlenAusgaben(zehnZahlen);

Dann hast Du eine saubere Unterteilung der Teile und die Chance, dass Du nichts durcheinander wirfst, ist deutlich größer. (Du hast eine Schleife zum Zahlen eingeben und das sortieren kannst/willst Du erst machen, wenn alle Zahlen eingegeben wurden, oder?

Dann noch ein paar Hinweise:
a) Ein Array fängt mit index 0 an. Wenn Du 10 Zahlen speichern willst, dann reicht ein Array der Größe 10 und der Index geht von 0 bis 9.
b) Variablen sollten nach dem Inhalt benannt werden und weniger nach dem Typ. Also statt zehnZahlen einfach nur zahlen. Denn das ist da ja gespeichert. Ob das nun 10 sind oder mehr, ist ja erst einmal irrelevant. Wenn Du sowas später anpassen willst, dann willst Du möglichst wenig Stellen anpassen müssen, daher wäre es unpraktisch, denn dann auch Variablennamen angepasst werden müssten.
 

mihe7

Top Contributor
Ich hätte noch einen Tipp: es wäre vielleicht ganz praktisch, den eingelesenen Wert auch im Array an Position i zu speichern :)
 
G

Gelöschtes Mitglied 65838

Gast
Java:
package algo;

public class Main2 {

    class Sorts{
        public int[] bubbleSort(int[] array) {
            int n = array.length;
            int temp = 0;
             for(int i=0; i < n; i++){
                     for(int j=1; j < (n-i); j++){
                              if(array[j-1] > array[j]){
                                     //swap elements
                                     temp = array[j-1];
                                     array[j-1] = array[j];
                                     array[j] = temp;
                             }
                     }
             }
            return array;
          
        }
    
    }
}
 
K

kneitzel

Gast
@Joreyk: Es ist bestimmt gut gemeint, fertigen Code zu liefern, aber ich fürchte, dass dies dem TE nicht wirklich weiter hilft. Damit kommt er maximal an einer Abgabe / Hausaufgabe vorbei, aber um so schlimmer wird es dann bei der nächsten Aufgabe, da Grundlagen einfach fehlen.

Daher wäre an der Stelle meine Bitte an Dich, Dich statt dessen auch eher Gedanken zu machen, an was es bei dem TE scheitert um dann an der Stelle einzuhaken und mit Erläuterungen zu helfen.
 
G

Gelöschtes Mitglied 65838

Gast
@Joreyk: Es ist bestimmt gut gemeint, fertigen Code zu liefern, aber ich fürchte, dass dies dem TE nicht wirklich weiter hilft. Damit kommt er maximal an einer Abgabe / Hausaufgabe vorbei, aber um so schlimmer wird es dann bei der nächsten Aufgabe, da Grundlagen einfach fehlen.

Daher wäre an der Stelle meine Bitte an Dich, Dich statt dessen auch eher Gedanken zu machen, an was es bei dem TE scheitert um dann an der Stelle einzuhaken und mit Erläuterungen zu helfen.
Sollte ich den Code Löschen
 

Hallo1234

Bekanntes Mitglied
Danke für eure Hilfe. Ich habe mir ein Codebeispiel zum Bubblesort-Algorithmus angeschaut und das dann übertragen. Jetzt hängt es nur noch an der Ausgabe. Es soll einmal die originale Zahlenreihe und die sortiere Zahlenreihe ausgegeben werden.
Java:
public static void zahlenEingeben() {
        Scanner s = new Scanner(System.in);

        int zahl = 0;
        int[] zahlen = new int[10];
        for(int i=1; i<zahlen.length+1; i++) {
            System.out.println("Geben Sie die "+i+". Zahl ein: ");
            zahl = s.nextInt();
        }

        int rueckgabe = zahlenSortieren(zahlen);
    }

    public static int zahlenSortieren(int[] zahlen) {
        int rueckgabe = 0;
        int smaller;
        int bigger;
        for(int j=0; j<zahlen.length-1; j++) {
            if(zahlen[j] > zahlen[j + 1]) {
                bigger = zahlen[j];
                smaller = zahlen[j + 1];
                zahlen[j] = smaller;
                zahlen[j + 1] = bigger;
            }
            zahlenAusgeben(zahlen, j);
        }
        return rueckgabe;
    }

    public static void zahlenAusgeben(int[] zahlen, int durchlaeufe) {
        System.out.print(zahlen[durchlaeufe]);
    }
 
G

Gelöschtes Mitglied 65838

Gast
nunja man kann doch auch ein Objekt erstellen das ein vorherarray hat und das zahlen Sortieren liefert dir das sortierte zurück
deswegen hatte ich vorher auch mal das int[] als rückgabe wert es sollte ja das sortierte zurück gegeben werden bei dir bleibt rueckgabe immer 0 ;)

dann hast du es was ich nicht verstehe ist dass du als "Durchläufe" den Array Index hernimmst die Anzahl deiner Durchläufe ist doch wie oft du die Werte tauschen musst

if ( getauscht)
counter++
 
G

Gelöschtes Mitglied 65838

Gast
Java:
SortierKlasse{
    durchläufe
        unsortiertesArray
    methode int[] arraySortieren(int array){
        
    }
    methode getDurchLauefe(){
        
    }
    methode arrayAusgeben(int array){
        
    }
}
so könnte man doch ein Objekt aufbauen man muss ja nicht die ganze Logik in der main machen
 
K

kneitzel

Gast
Es hängt nicht nur an der Ausgabe. Es hängt auch noch an der Eingabe, denn Du speicherst die Zahlen nicht im Array.
Die Schleife bezüglich der Eingabe müsste man dann ggf. bezüglich der Grenzen auch noch anpassen, da es ja bei Index 0 los gehen sollte.

Bezüglich sortieren wäre dann wieder meine Frage, ob Du da nicht etwas vermischt. Denn von einer Methode zahlenSortieren erwarte zumindest ich, dass die Methode Zahlen sortiert. Eine Ausgabe sollte da dann nicht drin sein ...
Dann solltest Du dir das noch einmal genau ansehen. Evtl. erst einmal z.B. mit dem Wikipedia Eintrag zu Bubblesort den Algorithmus verstehen. Oder man mit dem vergleichen, was @Joreyk netter weise schon bereit gestellt hat. (Frag nach bei Verständnisproblemen!)

Bezüglich Ausgabe solltest Du Dir überlegen, was ausgegeben werden soll. Wenn das Array ausgegeben werden soll, dann muss ja nur das Array als Parameter angegeben werden. Dann musst Du nur noch überlegen, wie Du alle Elemente eines Arrays ausgeben kannst.
 

Hallo1234

Bekanntes Mitglied
So, jetzt wird mir schon mal die originale Zahlenreihe am Ende ausgegeben. Fehlt nur noch die sortierte Zahlenreihe.
Java:
public static void zahlenEingeben() {
        Scanner s = new Scanner(System.in);

        int[] zahlen = new int[10];
        for(int i=0; i<zahlen.length; i++) {
            System.out.println("Geben Sie die "+(i+1)+". Zahl ein: ");
            zahlen[i] = s.nextInt();
        }
        zahlenSortieren(zahlen);
        
    }

    public static int zahlenSortieren(int[] zahlen) {
        int rueckgabe = 0;
        int smaller;
        int bigger;
        for(int j=0; j<zahlen.length-1; j++) {
            if(zahlen[j] > zahlen[j + 1]) {
                bigger = zahlen[j];
                smaller = zahlen[j + 1];
                zahlen[j] = smaller;
                zahlen[j + 1] = bigger;
            }
            zahlenAusgeben(zahlen, j);
        }
        return rueckgabe;
    }

    public static void zahlenAusgeben(int[] zahlen, int durchlaeufe) {
        System.out.print(zahlen[durchlaeufe]);
    }
 
G

Gelöschtes Mitglied 65838

Gast
So, jetzt wird mir schon mal die originale Zahlenreihe am Ende ausgegeben. Fehlt nur noch die sortierte Zahlenreihe.
Java:
public static void zahlenEingeben() {
        Scanner s = new Scanner(System.in);

        int[] zahlen = new int[10];
        for(int i=0; i<zahlen.length; i++) {
            System.out.println("Geben Sie die "+(i+1)+". Zahl ein: ");
            zahlen[i] = s.nextInt();
        }
        zahlenSortieren(zahlen);
       
    }

    public static int zahlenSortieren(int[] zahlen) {
        int rueckgabe = 0;
        int smaller;
        int bigger;
        for(int j=0; j<zahlen.length-1; j++) {
            if(zahlen[j] > zahlen[j + 1]) {
                bigger = zahlen[j];
                smaller = zahlen[j + 1];
                zahlen[j] = smaller;
                zahlen[j + 1] = bigger;
            }
            zahlenAusgeben(zahlen, j);
        }
        return rueckgabe;
    }

    public static void zahlenAusgeben(int[] zahlen, int durchlaeufe) {
        System.out.print(zahlen[durchlaeufe]);
    }
der Rückgabe wert und die zahlen Ausgabe stimmen aber immer noch nicht ;)
 

Hallo1234

Bekanntes Mitglied
Den Rückgabewert habe ich geändert:
Java:
public static void zahlenEingeben() {
        Scanner s = new Scanner(System.in);

        int[] zahlen = new int[10];
        for(int i=0; i<zahlen.length; i++) {
            System.out.println("Geben Sie die "+(i+1)+". Zahl ein: ");
            zahlen[i] = s.nextInt();
        }
        zahlenSortieren(zahlen);
        
    }

    public static int[] zahlenSortieren(int[] zahlen) {
    
        int smaller;
        int bigger;
        for(int j=0; j<zahlen.length-1; j++) {
            if(zahlen[j] > zahlen[j + 1]) {
                bigger = zahlen[j];
                smaller = zahlen[j + 1];
                zahlen[j] = smaller;
                zahlen[j + 1] = bigger;
            }
            zahlenAusgeben(zahlen, j);
        }
        return zahlen;
    }

    public static void zahlenAusgeben(int[] zahlen, int durchlaeufe) {
        System.out.print(zahlen[durchlaeufe]);
    }

Was fehlt bei zahlenAusgabe?
 
G

Gelöschtes Mitglied 65838

Gast
Den Rückgabewert habe ich geändert:
Java:
public static void zahlenEingeben() {
        Scanner s = new Scanner(System.in);

        int[] zahlen = new int[10];
        for(int i=0; i<zahlen.length; i++) {
            System.out.println("Geben Sie die "+(i+1)+". Zahl ein: ");
            zahlen[i] = s.nextInt();
        }
        zahlenSortieren(zahlen);
       
    }

    public static int[] zahlenSortieren(int[] zahlen) {
   
        int smaller;
        int bigger;
        for(int j=0; j<zahlen.length-1; j++) {
            if(zahlen[j] > zahlen[j + 1]) {
                bigger = zahlen[j];
                smaller = zahlen[j + 1];
                zahlen[j] = smaller;
                zahlen[j + 1] = bigger;
            }
            zahlenAusgeben(zahlen, j);
        }
        return zahlen;
    }

    public static void zahlenAusgeben(int[] zahlen, int durchlaeufe) {
        System.out.print(zahlen[durchlaeufe]);
    }

Was fehlt bei zahlenAusgabe?
es ist unwichtig an welcher stelle der tausch war sondern es ist wichtig wie oft getauscht werden musste um das sortierte array zu haben
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Generischer Bubblesort Java Basics - Anfänger-Themen 19
S BubbleSort für ArrayLists Java Basics - Anfänger-Themen 3
I Bubblesort Java Basics - Anfänger-Themen 1
L Bubblesort in Batch Script Java Basics - Anfänger-Themen 15
D Bubblesort Java Basics - Anfänger-Themen 2
G Bubblesort Array der Größe 10 Java Basics - Anfänger-Themen 1
M Bubblesort ohne Array Java Basics - Anfänger-Themen 30
V_Fynn03 Erste Schritte BubbleSort Quelltext funktioniert noch nicht Java Basics - Anfänger-Themen 1
H Bubblesort-Zwei Integer auf Dekade vergleichen. Java Basics - Anfänger-Themen 6
R Erste Schritte Einsteiger-Video Bubblesort Bewertung Java Basics - Anfänger-Themen 11
D Array/Bubblesort Fehlermeldungen Java Basics - Anfänger-Themen 1
U BubbleSort Problem Java Basics - Anfänger-Themen 2
L Array und Bubblesort Java Basics - Anfänger-Themen 4
L Frage zu BubbleSort Algorithmus Java Basics - Anfänger-Themen 2
T BubbleSort Java Basics - Anfänger-Themen 9
O Bubblesort allgemeiner schreiben Java Basics - Anfänger-Themen 5
J Interface Bubblesort soll Arrays beliebiger Referenztypen sortieren können. Java Basics - Anfänger-Themen 5
N Mein Bubblesort sortiert mein Array nicht Java Basics - Anfänger-Themen 2
E BubbleSort Java Basics - Anfänger-Themen 2
J Erste Schritte Bubblesort Java Basics - Anfänger-Themen 6
G Array mit BubbleSort sortieren Java Basics - Anfänger-Themen 2
N Bubblesort Programm funktioniert nicht Java Basics - Anfänger-Themen 19
R BubbleSort Java Basics - Anfänger-Themen 4
R BubbleSort Java Basics - Anfänger-Themen 15
A BubbleSort Java Basics - Anfänger-Themen 7
B BubbleSort Java Basics - Anfänger-Themen 10
R BubbleSort Java Basics - Anfänger-Themen 6
C Klassen BubbleSort was passiert mit dem Index ? Java Basics - Anfänger-Themen 2
B Sortiermethode bei Bubblesort Java Basics - Anfänger-Themen 15
G Bubblesort - Falsche Sortierung Java Basics - Anfänger-Themen 6
M Laufzeitanalyse Bubblesort Java Basics - Anfänger-Themen 7
T BubbleSort Java Basics - Anfänger-Themen 2
P BubbleSort-Methode Java Basics - Anfänger-Themen 18
M BubbleSort (Sortieralgorithmus) Java Basics - Anfänger-Themen 28
B Bubblesort Java Basics - Anfänger-Themen 70
G Bubblesort ohne Schleifen Java Basics - Anfänger-Themen 10
F Bubblesort, Insertsort Java Basics - Anfänger-Themen 2
K BubbleSort Hausaufgabe Java Basics - Anfänger-Themen 20
B Bubblesort-Algorithmus und Testklasse Java Basics - Anfänger-Themen 5
c_sidi90 Array mit Bubblesort sortieren Java Basics - Anfänger-Themen 8
B Java Bubblesort Java Basics - Anfänger-Themen 5
F Bubblesort---Frage von Anfänger Java Basics - Anfänger-Themen 2
E BubbleSort kleiner Fehler? Java Basics - Anfänger-Themen 14
B BubbleSort Java Basics - Anfänger-Themen 5
L Bubblesort: Exception in Thread "main" Java Basics - Anfänger-Themen 5
K Einfaches Bubblesort Java Basics - Anfänger-Themen 11
W Problem mit BubbleSort und Array Java Basics - Anfänger-Themen 10
Spin taschenrechner incl bubblesort Java Basics - Anfänger-Themen 5
G Bubblesort Java Basics - Anfänger-Themen 2
Binary.Coder Bubblesort in einfachen unmissverständlichen Sätzen Java Basics - Anfänger-Themen 2
B Bubblesort Verfahren Java Basics - Anfänger-Themen 2
C Bubblesort Java Basics - Anfänger-Themen 5
I BubbleSort-Algorithmus Java Basics - Anfänger-Themen 8
G Bubblesort Java Basics - Anfänger-Themen 23
G Bubblesort Java Basics - Anfänger-Themen 15
kulturfenster BubbleSort Java Basics - Anfänger-Themen 7
T Bekomme Fehler mit Bubblesort Java Basics - Anfänger-Themen 2
T Zahlen mit Bubblesort sortieren Java Basics - Anfänger-Themen 2
D Bubblesort und Array Java Basics - Anfänger-Themen 6
T Bubblesort Java Basics - Anfänger-Themen 5
L Bubblesort funzt nicht Java Basics - Anfänger-Themen 3
N bubblesort Java Basics - Anfänger-Themen 4
T BubbleSort optimieren ??? Java Basics - Anfänger-Themen 26

Ähnliche Java Themen

Neue Themen


Oben