Bubblesort

XHelp

Top Contributor
Naja, aber da wird ja der Index
Code:
i+1
angesprochen, also sollte es
Code:
i<bubbleman.length-1
heißen
 

Fasko

Mitglied
i wird ja unabhängig davon welcher index beim Bubbleman genutzt wird normal hochgezählt bis es die länge des Arrays erreicht hat...
Damit sollte es in meinen Augen nichts zu tun haben.
:p
 

XHelp

Top Contributor
Damit sollte es in meinen Augen nichts zu tun haben.
:p

Damit das ganze etwas handfester wird, habe ich den Code gerade ausprobiert. Die vollständige Ausgabe lautet:
Code:
Durchlauf 0
Durchlauf 1
Durchlauf 2
Durchlauf 3
Durchlauf 4
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
        at bubblechen.main(bubblechen.java:35)
i ist beim letzten Schleifendurchlauf 4, er wird also die Werte beim Index
Code:
4
und
Code:
4+1=5
miteinander vergleichen wollen und mit der Exception aussteigen, da es nun mal der Index 5 hier nicht existiert.

Der vergeleich den aktuellen Index mit dem nächsten. Also ist es auch logisch, dass man dafür sorgen, dass man auch einen nächsten Index hat, also
Code:
-1
in die Schleife und es klappt.
 

Fasko

Mitglied
Das habe ich nun gemacht... gleiche Ausgabe ... :p

Code:
import java.util.*;

public class bubblechen {

	/**
	 * @param args
	 */
	public static void main(String[] args)
	{
		// TODO Auto-generated method stub
		
	 int bubbleman[]= {12, 16, 36, 24, 56};
	//	int bubbleman[] = new int[5];
		int zwischenspeicher;
		boolean wechsel;
		
		/*Random zufallsGenerator = new Random();
		int zufall;
		
		for (int i = 0; i<bubbleman.length; i++) // Zufallszahlen
		{
			bubbleman[i] = 2;		
						
		}*/
		
		
		do // Sortieren
		{
			wechsel = false;
			System.out.println("Test");
			for (int i = 0; i<bubbleman.length-1; i++)
			{
				System.out.println("Durchlauf "+i);
				
				if (bubbleman[i+1] < bubbleman[i])
				{
					zwischenspeicher = bubbleman[i];
					bubbleman[i] = bubbleman[i+1];
					bubbleman[i+1] = zwischenspeicher;
					wechsel = true;
					
				} // if

				
				
			} // for Ende
			
			
		}while(wechsel);
		
	System.out.println("Sortiert:");
	
		for (int x = 0; x<bubbleman.length; x++)
		{
			
			System.out.println(bubbleman[x]);
			
			
		}// for
		

	}

}
 

XHelp

Top Contributor
Habe mir den Thread hier nicht komplett durchgelesen, aber gibt es nicht, wie in C eine Funktion, die das macht?

Arrays#sort(T[], Comparator)
Doch, die gibt es. Aber solche Sachen sind meistens Hausaufgaben, wo es der eigentliche Sinn ist es selber zu implementieren. Darüber hinaus sind auch in C nicht alle Sortierverfahren implementiert, und man sucht sich eins aus. Da gibt es auch nur ein bestimmtes Verfahren, dem du einen Comparator übergeben kannst.
 
Zuletzt bearbeitet:

Fasko

Mitglied
Ok... das mit dem -1 stimmt.
Aber warum springt der nicht aus der Methode raus!?!?

Code:
import java.util.*;

public class bubblechen {

	/**
	 * @param args
	 */
	public static void main(String[] args)
	{
		// TODO Auto-generated method stub
		
	 int bubbleman[]= {12, 16, 36, 24, 56};
	//	int bubbleman[] = new int[5];
		int zwischenspeicher;
		boolean wechsel;
		
		/*Random zufallsGenerator = new Random();
		int zufall;
		
		for (int i = 0; i<bubbleman.length; i++) // Zufallszahlen
		{
			bubbleman[i] = 2;		
						
		}*/
		
		
		do // Sortieren
		{
			wechsel = false;
			System.out.println("Test");
			for (int i = 0; i<bubbleman.length-1; i++)
			{
				// System.out.println("Durchlauf "+i);
				
				if (bubbleman[i+1] < bubbleman[i])
				{
					zwischenspeicher = bubbleman[i];
					bubbleman[i] = bubbleman[i+1];
					bubbleman[i+1] = zwischenspeicher;
					wechsel = true;
					
				} // if
				else
				{
					wechsel = false;
				}
				
				
				
			} // for Ende
			
			
		}while(wechsel);
		
		for (int x = 0; x<bubbleman.length; x++)
		{
			
			System.out.println(bubbleman[x]);
			
			
		}// for
		
	System.out.println("Sortiert:");
	
		
		

	}

}

Der verlässt die do while Schleife nicht, warum?! :rtfm:
 

Fasko

Mitglied
Auch ohne komme ich keinen Schritt weiter...

Code:
import java.util.*;

public class bubblechen {

	/**
	 * @param args
	 */
	public static void main(String[] args)
	{
		// TODO Auto-generated method stub
		
	 int bubbleman[]= {58, 16, 36, 24, 56};
	//	int bubbleman[] = new int[5];
		int zwischenspeicher;
		boolean wechsel;
		
		/*Random zufallsGenerator = new Random();
		int zufall;
		
		for (int i = 0; i<bubbleman.length; i++) // Zufallszahlen
		{
			bubbleman[i] = 2;		
						
		}*/
		
		
		do // Sortieren
		{
			wechsel = false;
			System.out.println("Test");
			for (int i = 0; i<bubbleman.length-1; i++)
			{
				// System.out.println("Durchlauf "+i);
				
				if (bubbleman[i+1] < bubbleman[i])
				{
					System.out.println("Durchlauf"+i);
					zwischenspeicher = bubbleman[i];
					bubbleman[i] = bubbleman[i+1];
					bubbleman[i+1] = zwischenspeicher;
					wechsel = true;
					
				} // if
			
				
				
				
			} // for Ende
			
			System.out.println("EndeWhile");
		}while(wechsel);
		System.out.println("Nach der While");
		for (int x = 0; x<bubbleman.length; x++)
		{
			
			System.out.println(bubbleman[x]);
			
			
		}// for
		
	System.out.println("Sortiert:");
	
		
		

	}

}

Ausgabe:

Durchlauf1
Durchlauf2
Durchlauf3
EndeWhile
 

Fasko

Mitglied
Ich mach das jetzt einfach so:

Code:
import java.util.*;
public class neuebubble {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		
		// TODO Auto-generated method stub
	int[] bubblegirl = {34, 32, 12, 4, 5};
		int temp;
		boolean getauscht;
		int test=0;
		
			
		// Durchläufe
		do
		{
			// vor dem Durchlauf wurde noch nicht getauscht
			getauscht = false;
			
			for (int i = 0; i<bubblegirl.length-1;i++)
			{
				if (bubblegirl[i+1]<bubblegirl[i])
				{
					test++;
				
					// Tauschvorgang
					temp = bubblegirl[i];
					bubblegirl[i] = bubblegirl[i+1];
					bubblegirl[i]=temp;
					
					// setze getauscht auf true
					getauscht = true;
				}
				
			}
			
			for (int i =0; i<bubblegirl.length;i++)
			{
				System.out.println(bubblegirl[i]);
			}
			
		}while(test<bubblegirl.length);
	
System.out.println("Fertig");

}
}

:)
 

Fasko

Mitglied
Kompilierst du nie nach der Änderung neu? :bahnhof:
Der von dir gepostete Code funktioniert

Bei mir nicht... komischerweise. ;(

Nichts gegen Java...
Aber ich sehne mich nach meinem Visual Studio für C# :oops:
Das hat zwar das System enorm verlangsamt und zu blöden Fensterchen geführt, aber es hat mich bei der Bedienung nicht verwirrt. :oops:
 

XHelp

Top Contributor
Macht kein Sinn, aber mach du mal...

Zum 2. Post:
Welche bedienung? Text in einen Texteditor schreiben?
javac nach Änderungen aufzurufen ist auch nicht die schwerste Aufgabe.
 

Landei

Top Contributor
Oh, ich hatte noch irgendwo einen BubbleSort rumliegen, muss ihn nur erst mal mit Bogosort fin... ach, da isser ja:

Java:
public class Bubblesort {

    private static void sortiereArray(int[] nr){
        for (int letzter = nr.length-1; letzter > 1; letzter--){
            for(int aktuell = 0; aktuell < letzter; aktuell++){
                if(nr[aktuell] > nr[aktuell + 1]){
                    int temp = nr[aktuell];
                    nr[aktuell] = nr [aktuell+1];
                    nr[aktuell+1] = temp;
                }
            }
        }
    }

    public static void main(String ... args) {
        int[] array = new int[] {1,3,5,34,5,76,5,4,56,4,43,3,4,5,56,4,32,22,1};
        sortiereArray(array);
        System.out.println(java.util.Arrays.toString(array));
    }

}
OK, vorzeitiger Abbruch (wenn in einem Druchlauf nicht getauscht wurde) fehlt, ist aber trotzdem ein klein wenig übersichtlicher als deine Version.
 

gift99

Mitglied
Hallo,
ich habe ne Klausur über einige Sortierverfahren geschrieben. Bei Bubblesort meint der Lehrer ich bräuchte nach der while-Schleife noch eine 2.Schleife. Und Ecplipse meint ich kann "i" nicht als Variable nehmen. Hat da wer ne Ahnung?

Java:
public class BubbleSort {
	public 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+1] < x[i])
		{
			temp = x[i];
			x[i]  = x[i+1];
			x[i+1] = temp;
			unsortiert = true;
		}	
	}	

public static void main (String [] args)
{
	int [] zahlen ={10, 14, 2, 3};
	sortiere (zahlen);
	System.out.println(zahlen[i]);
}

}

	
[code=Java]
 

XHelp

Top Contributor
Und warum kannst du
Code:
i
nicht nehmen? Wie genau lautet die Fehlermeldung? In welcher Zeile etc...
Ein weiteres Problem ist, dass die Methode
Code:
sortieren
nicht statisch ist.
 

gift99

Mitglied
Ja, du hast recht mit dem statisch. Ich hab in der zweiten Klasse vergessen die for-Schleife zu machen. Und die Fehlermeldung verschwand, als ich nach der while-Schleife(oben) die geschweifte Klammer gesetzt habe. Hätt' sich somit erledigt. Trotzdem danke. : )
 

gift99

Mitglied
Hat einer vllt eine Ahnung, wo man einen ausführbaren Code von InsertionSort vorfinden kann? Ich brauch ihn als Vergleich für meinen..
 

Crian

Top Contributor
Nichts gegen Java...
Aber ich sehne mich nach meinem Visual Studio für C# :oops:

Sehe ich das richtig, dass du gerade die Bearbeitung von Javaquellcode in "irgendeinem" Editor nebst selbst Kompilieren auf Kommandozeilenebene mit einer kompletten Entwicklungsumgebung vergleichst? :autsch:

Wenn, dann halte Eclipse dagegen und wundere dich.
 
Ä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
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
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
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