Bubblesort ohne Schleifen

G

gregg001

Gast
Hallo zusammen,

ich habe eine Frage zu dem Sortierverfahren bubblesort.

Wie kann ich bubblesort ohne Schleifen implementieren.
Normalerweise würde ich es mit 2 for-Schleifen beschreiben, aber ohne Schleifen fällt mir nur die Möglichkeit einer rekursiven Methode ein.
Wie müsste so eine Methode aussehen?

Besten Dank für Eure Hilfe
greg
 
S

SlaterB

Gast
z.B. BubbleSort MIT Schleifen und main-Methode mit Aufruf mit Testdaten,

ohne Rekursion wirds kaum gehen, richtig, ist die Alternative versteckter Schleifen
 
G

gregg001

Gast
Noch etwas rudimentär, aber so in der Richtung irgendwie?

Es könnte auch sein, dass 2 benachbarte Elemente stimmen, dann würde die if-Bed. garnicht aufgerufen werden.

Java:
public static int[] sort (int[] feld)
{

i = 0;
k = 1;

if(feld[i] > feld[k])
{
feld[i] = feld[k];
i++;
k++;

return(feld[]);
}

else{



}


}
 
S

SlaterB

Gast
> return(feld[]);
zeugt auch nicht gerade von Codequalität

bevor du also über Rekursion und sonstige Schwierigkeiten nachdenken musst
versuche wirklich erstmal irgendeine Art BubbleSort zum Laufen zu bekommen,
bei google bestimmt zu finden
 
G

gregg001

Gast
So habe noch einbisschen weiter gemacht.
Leider gibt er mir als Feld @-Zeichen und Buchstaben aus??

Java:
package Info1;


public class bubblesort extends MiniJava {

    public static int laufparameter1 = 0;
    public static int laufparameter2 = 0;
    public static int laufparameter3 = 0;

    public static void main(String[] args) {

        int[] feld; // Deklaration
        int anzahl = read();
        feld = new int[anzahl];
// Anlegen des Felds
        int i = 0;
        while (i < anzahl) {
            feld[i] = read();
            i = i + 1;
        }


        sort(feld, anzahl, laufparameter1, laufparameter2);
    }

    public static int[] sort(int[] feld, int anzahl, int laufparameter1, int laufparameter2) {


        if (laufparameter2 < anzahl - 1) {
            if (feld[laufparameter1] > feld[laufparameter1 + 1]) {

                int temp = feld[laufparameter1];
                feld[laufparameter1] = feld[laufparameter1 + 1];
                feld[laufparameter1 + 1] = temp;

                laufparameter1++;
                laufparameter2++;

                return sort(feld, anzahl, laufparameter1, laufparameter2);

            }
            laufparameter1++;
            laufparameter2++;
            return sort(feld, anzahl, laufparameter1, laufparameter2);
        }

        return pruefe(feld, 0, anzahl, laufparameter3);


    }

    public static int[] pruefe(int[] feld, int laufparameter1, int anzahl, int laufparameter3) {


        if (laufparameter3 < anzahl) {

            if (feld[laufparameter1] > feld[laufparameter1 + 1]) {


                laufparameter1++;
                laufparameter3++;
                return sort(feld, anzahl, 0, 0);


            }
            laufparameter3++;
            return pruefe(feld, laufparameter1, anzahl, laufparameter3);

        }
        System.out.print(feld);
        return feld;
    }
}
 
G

gregg001

Gast
Ja stimmt.
Vielen Dank das Programm funktioniert jetzt.

Nun soll ich noch ein 2. Programm schreiben, bei dem ich gerade wirklich hänge:
Es nennt sich Spiel des Lebens:

Java:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Info1;

/**
 *
 * @author Wu
 */
public class SpieldesLebens extends SDL {

    public static void main(String[] args) {

        boolean zustand; // true ist lebendig, false ist tot
        zustand = false;
        boolean[][] spielfeld; // Deklaration
        int anzahlzeilen = read("Anzahl der Zeilen");
        int anzahlspalten = read("Anzahl der Spalten");
        spielfeld = new boolean[anzahlzeilen][anzahlspalten];

//Eingabe der Konfiguration
        write("Konfigurieren sie Ihre Felder");


        update(spielfeld);


        for (int i = 0; i < anzahlzeilen; i++) {
            for (int j = 0; j < anzahlspalten; i++) {

                zaehleNachbarn(spielfeld, i, j);

            }
        }
        //update(spielfeld);


    }

    public static boolean isLebendig(boolean[][] spielfeld, int i, int j) {

        if (spielfeld[i][j] = true) {

            return true;


        }
        return false;

    }

    public static int zaehleNachbarn(boolean[][] spielfeld, int i, int j) {

        int anzahllebendig = 0;

        int k = i - 2;
        int l = i;
        int m = j - 2;
        int n = j;
        for (i = k; i <= l; i++) {
            for (j = m; j <= n; j++) {
                if (i == -1 || j == -1) {
                    i = 1;
                    j = 1;
                }
                if (i == -2 || j == -2) {
                    i = 0;
                    j = 0;

                }
                if (isLebendig(spielfeld, i, j) == true) {

                    anzahllebendig++;

                }
            }

        }
        if (spielfeld[i][j] == true && (anzahllebendig == 2 || anzahllebendig == 3)) {

            spielfeld[i][j] = true;

        } else {
            spielfeld[i][j] = false;
        }

        if (spielfeld[i][j] == false && anzahllebendig == 3) {

            spielfeld[i][j] = true;

        } else {
            spielfeld[i][j] = false;
        }

        update(spielfeld);
        return anzahllebendig;



    }
}

er setzt mit falsche boolean-Werte, also setzt dort auf lebend wo tod stehen müsste.
Ist an der Methode zaehleNachbarn etwas falsch, führt das zu einer Endlosbedingung?
 
G

gregg001

Gast
Vorgegeben ist diese Klasse mit der das Feld aktualisiert werden kann.

Java:
package Info1;


import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class SDL extends MiniJava {
    private static final Object syncObj = new Object();
    private static final int w = 20;

    private static class But extends JButton {
        boolean[][] arena;
        int i,j;

        But(boolean[][] _arena, int _i, int _j) {
            arena = _arena;
            i = _i;
            j = _j;
            setLabel();
            addActionListener(new ActionListener(){
                public void actionPerformed(ActionEvent e) {
                    arena[i][j] = !arena[i][j];
                    setLabel();
                }
            });
            setLocation(w*j,w*i);
        }

        void setLabel() {
            if (arena[i][j])
                setBackground(Color.RED);
            else
                setBackground(Color.BLUE);
            setSize(w,w);
        }
    }

    private static class UpdateArenaFrm extends JFrame {
        UpdateArenaFrm(boolean[][] arena) {
            JPanel panel = new JPanel(null);
            panel.setPreferredSize(new Dimension(400,400));
            panel.setMinimumSize(new Dimension(400,400));
            JButton okBut = new JButton("Weiter!");
            getContentPane().add(BorderLayout.SOUTH, okBut);
            okBut.addActionListener(new ActionListener(){
                public void actionPerformed(ActionEvent e) {
                    dispose();
                    synchronized(syncObj) {
                        syncObj.notifyAll();
                    }
                }
            });
            addWindowListener(new WindowAdapter() {
                public void windowClosing(WindowEvent e) {
                    System.exit(0);
                }
            });
            getContentPane().add(panel);
            for (int i=0; i<arena.length; i++)
                for (int j=0; j<arena[i].length; j++) {
                    panel.add(new But(arena,i,j));
                }
            pack();
        }
    }

    private static JFrame frm;

    public static void updateArena(boolean[][] arena) {
        UpdateArenaFrm frm = new UpdateArenaFrm(arena);
        frm.setVisible(true);
        synchronized (syncObj) {
            try {
                syncObj.wait();
            } catch(Exception e) {
                //nichts zu tun
            }
        }
    }

    public static void update(boolean[][] arena) {
        updateArena(arena);
    }

}
 

XHelp

Top Contributor
Vllt. sollte man eine Frage über Spiel des Lebens nicht unbedingt in einem Thread stellen welcher "Bubblesort ohne Schleifen" heißt...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Bubblesort ohne Array Java Basics - Anfänger-Themen 30
S Generischer Bubblesort Java Basics - Anfänger-Themen 19
S BubbleSort für ArrayLists Java Basics - Anfänger-Themen 3
H Bubblesort-Algorithms Java Basics - Anfänger-Themen 14
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
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
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
J Delay erzeugen, ohne Programm zu blockieren Java Basics - Anfänger-Themen 7
P Main Methode scheint Constructor aufzurufen, ohne dass es so gecoded ist Java Basics - Anfänger-Themen 2
iAmFaiinez Primzahlen Tester ohne Array Java Basics - Anfänger-Themen 4
V JSON-Objs aus JSON-Obj filtern und löschen (Manipulation ohne Kenntnis der vollst. Struktur) Java Basics - Anfänger-Themen 12
O HashTable kann ohne Performance-Verlust in Multithreaded-Anwendungen eingesetzt werden. Java Basics - Anfänger-Themen 6
T Mehrere if bedingungen ohne & Java Basics - Anfänger-Themen 2
M methode aufrufen ohne parameter Java Basics - Anfänger-Themen 1
M Verständnisfrage: Warum wird die Datei ohne Inhalt übertragen Java Basics - Anfänger-Themen 3
G Programm läuft durch, ohne Eingabe aus dem Chat abzuwarten Java Basics - Anfänger-Themen 4
Mugetsu35 ArrayList Update ohne Index Java Basics - Anfänger-Themen 6
P 2n Potenzieren ohne Math.pow oder pow Java Basics - Anfänger-Themen 8
M 2d array ohne längen anlegen Java Basics - Anfänger-Themen 4
Zentriks Hilfe zu Sieb des Eratosthenes ohne boolean Java Basics - Anfänger-Themen 5
W GUI - JButton ohne Funktion? Java Basics - Anfänger-Themen 24
X Enum Abfrage ohne if, for, while oder switch Java Basics - Anfänger-Themen 21
R Buttons ohne Funktion Java Basics - Anfänger-Themen 2
JavaBeginner22 TextArea, ohne Zeilenumbruch? Java Basics - Anfänger-Themen 4
frager2345 Programm erstellen ohne Autoboxing und Unboxing Java Basics - Anfänger-Themen 13
J In der Ausgabe wird ohne Eingabe in den else Block gesprungen. Java Basics - Anfänger-Themen 0
J In der Ausgabe wird ohne Eingabe in den else Block gesprungen. Java Basics - Anfänger-Themen 5
S Was macht ++ ohne Schleife? Java Basics - Anfänger-Themen 4
berserkerdq2 An selbst ersteller txt Datei immer Text dranhängen, ohne den vorherign Text zu löschen Java Basics - Anfänger-Themen 8
U Methode wird genutzt, ohne dass ich die aufrufe? Java Basics - Anfänger-Themen 4
B Jar Dateien ohne IDE verwenden? Java Basics - Anfänger-Themen 1
M Wie verknüpfe ich eine Bedingung mit einer Methode ohne if-Verzweigung & Bedingungsoperator? Java Basics - Anfänger-Themen 2
M Konstruktor ohne Übergabe eines Wertes Java Basics - Anfänger-Themen 7
S Chars vergleichen ohne Betrachtung der Groß und Kleinschreibung Java Basics - Anfänger-Themen 7
javapingu Variablenwerte ändern ohne return Statement? Java Basics - Anfänger-Themen 7
R Frage zu Methoden (Rückgabewert u. ohne.) Java Basics - Anfänger-Themen 2
E Meine JCombobox werte an ohne selectiert zu haben Java Basics - Anfänger-Themen 6
T Eigene Exception - ohne werfen abfangen Java Basics - Anfänger-Themen 2
M for schleife ohne geschweifte Klammer Java Basics - Anfänger-Themen 15
KogoroMori21 Variable im Parameter und Ohne Java Basics - Anfänger-Themen 5
alice98 Erste Schritte Liste erstellen ohne vorgefertigte Klassen Java Basics - Anfänger-Themen 1
L Zufälligen Zahlencode, ohne mehrfacher Verwendung einer Ziffer Java Basics - Anfänger-Themen 15
Sinan Arrays auflisten ohne Wiederholung Java Basics - Anfänger-Themen 28
A Löschen von Leerzeichen in einem char array ohne methoden Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben