# Bubblesort



## -BadBoy- (9. Jan 2011)

hallo,
ich bin halbwegs am verzweifeln. 
ich verstehe nicht wie man Bubblesort mit Java macht. Ich habe schon etliche Seiten durchgelesen und mir Tutorials angeguckt...doch nirgendwo war es verständnissvoll bzw gut erklart und deswegen verstehe ich nur die halfte.

Java Bubblesort - Java - Coder Forum
z.B. hier bei diesem Link.......

ich würde mich sehr freuen wenn mir jemand dabei hilft dieses Programm erklart ...ich brauche es heute...also ab morgen braucht ihr nix mehr posten......

thx vor help


----------



## Gast2 (9. Jan 2011)

Du hast den bubblesort mal aufm papier gemacht? haste damit schon probleme?
was hast du bisher an quelltext?


----------



## XHelp (9. Jan 2011)

Was genau verstehst du denn nicht an Bubblesort?

P.S. Ich würde das nächste mal noch ein paar Ausrufezeichen mehr setzen. Je mehr Ausrufezeichen, desto früher hast du angefangen dich um deine Hausaufgaben zu kümmern.


----------



## -BadBoy- (9. Jan 2011)

also ich verstehe Bubblesort als prozess.....also in der Theorie.
jedoch ist mein Problem, dass ich nicht versthe wie ich letzendlich diese Prufen und Swappen hinkriege.


also angefangen mit:

public class Bubbles
{
 public static void main(String[] args)              /// muss ja immer am anfang
{
         int array [] = new int [22, 72, 34, 25];   /// hier geb ich sozusagen den array an mit dem ich
                                                               /// arbeite bzw wo ich Bubblesort anwenden werde

was ich nun tun muss weiss ich leider nicht mehr


----------



## -BadBoy- (9. Jan 2011)

XHelp hat gesagt.:


> P.S. Ich würde das nächste mal noch ein paar Ausrufezeichen mehr setzen. Je mehr Ausrufezeichen, desto früher hast du angefangen dich um deine Hausaufgaben zu kümmern.



ich habe schon seit ein paar wochen mit den "Hausaufgaben" angefangen...doch hab ich leider keine bekannten die sich mit diesen "Hausaufgaben" auskennen. ! und i habe ich gesetzt, da man damit mehr Beachtung für den Thread bekommt...jedoch habe ich noch nicht die eigenschaft im zusammenhang der "Hausaufgaben" gefunden...


----------



## XHelp (9. Jan 2011)

Das ist syntaktisch falsch. Dir fehlen scheinbar Java Grundlagen, die du zunächst erstmal nachholen musst.
Du schreibst dass du dich intensiv damit beschäftigt hast und mehr hast du nicht an Code?


----------



## -BadBoy- (9. Jan 2011)

XHelp hat gesagt.:


> Das ist syntaktisch falsch. Dir fehlen scheinbar Java Grundlagen, die du zunächst erstmal nachholen musst.
> Du schreibst dass du dich intensiv damit beschäftigt hast und mehr hast du nicht an Code?



das sehe ich ein..ich habe jetzt seit 2 jahren info und seit ein paar monaten ca 4 Java


----------



## Final_Striker (9. Jan 2011)

schon mal duchgelesen?
Bubblesort ? Wikipedia


----------



## -BadBoy- (9. Jan 2011)

Final_Striker hat gesagt.:


> schon mal duchgelesen?
> Bubblesort ? Wikipedia



natürlich


----------



## Landei (9. Jan 2011)

Und das hier: Bubble sort (Java) - LiteratePrograms

Dir fehlen alle Grundlagen, deshalb ist es sinnlos, dir hier eine Lösung vorzukauen, also kannst du auch gleich abschreiben...


----------



## Final_Striker (9. Jan 2011)

und?

den Pseudoalgorithmus kann man doch einfach in Java übernehmen.

A : Liste sortierbarer Elemente -> dein Array mit Zahlen
wiederhole ,solange vertauscht und n > 1 -> do while-Schleife
für jedes i von 1 bis n - 1 wiederhole -> for-Schleife


----------



## -BadBoy- (9. Jan 2011)

Ich drehe mal die Frage etwas um:
*Hat jmd hier im Forum Lust(und Zeit) mir  bei der erstellung eines Bubblesortprogramms für Java zu helfen?*

das letzte was wir gemnacht hatten waren Arrays, davor noch einige schleifen. Theoretisch musste es ja damit schon gehen.


----------



## Final_Striker (9. Jan 2011)

Dann fang doch mal an.


----------



## -BadBoy- (9. Jan 2011)

Landei hat gesagt.:


> Und das hier: Bubble sort (Java) - LiteratePrograms
> 
> Dir fehlen alle Grundlagen, deshalb ist es sinnlos, dir hier eine Lösung vorzukauen, also kannst du auch gleich abschreiben...



abschreiben bring nix denn: Meine aufgabe (presentation) ist es uber Sortieralgoritmen zu presentieren
ich habe 3 algoritmen die ich vorstellenw erde und 1 bubblesort, welches ich auch als programm in java vorstellen muss und dabei sollte ich es verstanden haben...


----------



## Gast2 (9. Jan 2011)

-BadBoy- hat gesagt.:


> Ich drehe mal die Frage etwas um:
> *Hat jmd hier im Forum Lust(und Zeit) mir  bei der erstellung eines Bubblesortprogramms für Java zu helfen?*


Helfen, oder komplett machen?
Ersteres hat wohl wenig sinn, und bei zweiten gehörts wohl eher in die Jobbörse?


----------



## -BadBoy- (9. Jan 2011)

Final_Striker hat gesagt.:


> und?
> 
> den Pseudoalgorithmus kann man doch einfach in Java übernehmen.
> 
> ...



und genau diese wiederholen usw da weiss ich nicht wie es geht..bzw wenn ich es vor mir sehe weiss ich nicht wie es zuzuordnen ist.


----------



## Final_Striker (9. Jan 2011)

Weißt du wie man Variablen, Schleife, Bedingungen in Java schreibt/benutzt?


----------



## -BadBoy- (9. Jan 2011)

EikeB hat gesagt.:


> Helfen, oder komplett machen?
> Ersteres hat wohl wenig sinn, und bei zweiten gehörts wohl eher in die Jobbörse?



dann braucht man sich ja dazu auch nicht aussern....entweder es kommt wer der mir hilft..auch gern uber praktischere programme z.b. durch skype, msn oder so.....oder man aussert nicht sich dazu, denn ich denke du hast auch intiligentere sachen zu tun als mir in meiner lage noch irgendwie klarzumachen, dass es keinen sinn hat usw...ich muss es machen...also werde ich es versuchen..weiter rumgucken..rumprobieren......bzw naturlich was gut ware auf hilfe hoffen...aber wenn ich keine hier bekome guck ich halt weiter.

srry wenn es aggressiv ruberkam....bin halt im moment echt in schlechter laune ...nicht ubel nehmen


----------



## -BadBoy- (9. Jan 2011)

Final_Striker hat gesagt.:


> Weißt du wie man Variablen, Schleife, Bedingungen in Java schreibt/benutzt?



also sagen wir es so.....halb halb.....ich habe hier ein paar zettel vor mir liegen.....und denke anhand von denen konnte ichs einigermassen hinkriegen  was zu benutzen


----------



## ARadauer (9. Jan 2011)

Das ist dein Problem "wiederholen usw"... was heißt usw? 
Wiederhohlen? mit for oder while!
vergleichen mit if
und swapen... a soll b werden und b soll a werden
also 
temp =a
a = b;
b = temp


gut das sind mal drei grund werkzuege... wie geht nun bubel sort

du iterierst über die elemente und vertauscht wenn die nebeneinanderliegenden verdreht sind.. das machst du so lange bis zu nicht mehr getauscht hast...

mehr infos kann ich dir leider auch nicht geben... code, naja das ist ein standard beispiel das sicher schon millionen von studenten in java implementiert haben... zb: Java-Universität


----------



## -BadBoy- (9. Jan 2011)

ARadauer hat gesagt.:


> Das ist dein Problem "wiederholen usw"... was heißt usw?
> Wiederhohlen? mit for oder while!
> vergleichen mit if
> und swapen... a soll b werden und b soll a werden
> ...



iterierst was bedeutet das?
temp hatten wir so nicht...aber wie ich das verstehe bedeutet das temporer also ein wert der nur zu einer zeit ist..und dann in einen andrern ubergen kann?

also z.b. zu dem gegebenen link von dir:
public static void sortiere(int[] x) {    hatten wir nicht....musste docha uch anderes gehen..also diese sortiere hatten wir nicht.

 boolean unsortiert=true;               (diese auszüge kann ich nicht ganz nachvollziehen..warum false)
 while (unsortiert){                        (ist damit gemeint...am ende wird "unsortiert" sortiert
         unsortiert = false;                  und somit am ende true?)    

 for (int i=0; i < x.length-1; i++)      diesen abschnitt verstehe ich nicht 
            if (x_ > x[i+1]) {                      
               temp       = x;
               x       = x[i+1];
               x[i+1]     = temp;_


----------



## Final_Striker (9. Jan 2011)

-BadBoy- hat gesagt.:


> also sagen wir es so.....halb halb.....ich habe hier ein paar zettel vor mir liegen.....und denke anhand von denen konnte ichs einigermassen hinkriegen  was zu benutzen



Woran hapert es dann. Du verstehst die Theorie, hast einen Pseudocode. Jetzt musst du doch nur den Code in Java umsetzen.


```
public class Bubbles
{
   public static void main(String[] args)
   {
      int[] array = new int [22, 72, 34, 25];
      sortiere(array);
   }

   public static void sortiere(int[] array)
   {
      ... dein Code
   }
}
```


----------



## -BadBoy- (9. Jan 2011)

Final_Striker hat gesagt.:


> Woran hapert es dann. Du verstehst die Theorie, hast einen Pseudocode. Jetzt musst du doch nur den Code in Java umsetzen.
> 
> 
> ```
> ...



so hab bischen rumgefuchtelt


----------



## ARadauer (9. Jan 2011)

> iterierst was bedeutet das?


mit einer schleife über die elemente einer liste oder eines arrays gehen...



> temp hatten wir so nicht...aber wie ich das verstehe bedeutet das temporer also ein wert der nur zu einer zeit ist..und dann in einen andrern ubergen kann?


naja temp ist einfach eine variable... war pseudocode also, da musst du dann den typ davor schreiben..

wie hier
temp = x_;
x = x[i+1];
x[i+1] = temp; 

wie willst du den zwei elemente vertauschen, wie machst du das?
x = x[i+1];
x[i+1] = x;
das klappt natürlich nicht, weißt du warum?




			for (int i=0; i < x.length-1; i++) diesen abschnitt verstehe ich nicht
		
Zum Vergrößern anklicken....

mhn naja was erwartest du jetzt?
das wir dir hier die for schleife erklären? sorry... aber die ausrede das euch der lehrer nicht erklärt hat.. das kauf ich hier keinem ab bzw ist mir egal, da es in jedem anfänger buch erklärt wird..._


----------



## ARadauer (9. Jan 2011)

> genau das was hier stehen sollte verstehe ich nicht


tja was sollen wir jetzt dagegen machen? 
du hast code der zeigt was da passiert, du hast gute erklärungen auf wikipedia, du hast ein paar erklärungen von uns...

Wenn das irgend ein Kurs in der Schule ist wirds schon für eine 4 reichen.. wenns ein Informatik Studium ist... tja sorry aber dann würd ichs lassen..


----------



## Final_Striker (9. Jan 2011)

> public void sortiere(int[] array)       sortiere hatten wir nicht geht es nicht anders



Du hast in 4 Monaten Java keine einzige Methode geschrieben???


----------



## -BadBoy- (9. Jan 2011)

ARadauer hat gesagt.:


> mit einer schleife über die elemente einer liste oder eines arrays gehen...
> 
> 
> naja temp ist einfach eine variable... war pseudocode also, da musst du dann den typ davor schreiben..
> ...


_  
for (int i=0; i < x.length-1; i++) wir hatten x.length-1 nicht
wir hatten z.B. 
for (int j=1;j<=10;j++)_


----------



## -BadBoy- (9. Jan 2011)

13.klasse abitur..also noch schule


----------



## Final_Striker (9. Jan 2011)

[c]x.length[/code] gibt die Länge des Arrays x zurück.


----------



## ARadauer (9. Jan 2011)

was ist x?
x ist ein array!
x.length lenght gibt die länge des arrays zürck.. mhn schwer sowas raus zu finden oder? length array - Google-Suche
was ist -1, ich denke das kann man verstehen oder?
wenn man die nebeneinanderliegenden elemente eines arrays vergleicht, ist es problematisch bis zum letzen zu gehen oder?


----------



## -BadBoy- (9. Jan 2011)

ok danke...jedoch hatte ich noch eine frage:

ware es moglich dass dennoch jmd z.B. bei diesem link Java-Universität
jmd schritt fur schritt schreibt fur schritt erklart, was das prog in der zeile macht.....
wenn nicht....dann nicht..wenn ja wurde mir das helfen...und ihr habt heute etwas gutes gemacht 




und danke fur die hilfen....btw....wo ihr so aggressiv auf HA gegangen seit nach dem motto...wir machen hier keine has usw.....ihr solltet euch freuen..ihr kennt euch aus...und mit diesem wissen zu helfen....warum also nicht sein wissen teilen..egal wofur....vor allem wen bei euch steht: programmieren aus leidenschaft....helft den uwissenden


----------



## Final_Striker (9. Jan 2011)

-BadBoy- hat gesagt.:


> warum also nicht sein wissen teilen..egal wofur....vor allem wen bei euch steht: programmieren aus leidenschaft....helft den uwissenden



Weil manche Schüler so dreist sind und gute Noten haben wollen ohne was dafür zu tun. Und das wäre doch unfair gegenüber denen die sich wirklich seit 4 Monaten mit Java rumschlagen. ;-)


----------



## -BadBoy- (9. Jan 2011)

hehe... ich hab versucht mir das klar zumachen..bzw mich damit auseinanderzusetzen und nur jetzt am letzten tag hilfe angefordert..wo ich merkte...irgendwie wird das alles nichts XD
obwohl ich auch sagen muss, dass informatik nicht wirklich das Gebiet ist..worin ich mich viel ausserhalb der schule beschaftigen mochte.


----------



## -BadBoy- (10. Jan 2011)

*UPDATE*

danke an die die geholfen haben um mir das Thema etwas naher zu bringen...nach dem ich noch gestern bis 2 uhr weitergemacht hab und schliesslich meinen Vortrag gehalten hab...und ne 3 bekommen aber..immerhin....DANKE


----------



## timbeau (10. Jan 2011)

Erwartest du jetzt Mitleid? 4 Monate Java und 1 Tag vor ner Präsentation sich das erste Mal damit auseinandersetzen? Also bis 2 Uhr nachts hat hier wohl jeder schon gearbeitet aber vielleicht hilfts ja für die Lebenserfahrung, dass aufschieben irgendwann Stress mit sich bringt.


----------



## asdasdjk (11. Jan 2011)

grundsätzlich zwei dinge sollte man bedenken:
- der reihe nach wird jedes element mit dem nachbarn getauscht
- es wird wiederholt, bis die liste sortiert ist

mit letzerem fängt man an und unterteilt es in eine äußere schleife, die eine innere enthält.


```
solange nicht sortiert
 solange nicht letztes element
  tausche ggf. aktuelles mit nächstem element
```

wie man for-/while-schleifen schreibt, solltet ihr gehabt haben, ebenso, wie man noch benötigte variablen (die anzeigen, ob sortiert ist) einführt.


----------



## -BadBoy- (11. Jan 2011)

asdasdjk hat gesagt.:


> grundsätzlich zwei dinge sollte man bedenken:
> - der reihe nach wird jedes element mit dem nachbarn getauscht
> - es wird wiederholt, bis die liste sortiert ist
> 
> ...



vielen dank..aber das wusste ich schon vorher


----------



## -BadBoy- (11. Jan 2011)

timbeau hat gesagt.:


> Erwartest du jetzt Mitleid? 4 Monate Java und 1 Tag vor ner Präsentation sich das erste Mal damit auseinandersetzen? Also bis 2 Uhr nachts hat hier wohl jeder schon gearbeitet aber vielleicht hilfts ja für die Lebenserfahrung, dass aufschieben irgendwann Stress mit sich bringt.



erwartest du jetzt respekt oder fuhlst du dich wichtig?
zu allererst ist es doch meine sache wie ich lerne oder nicht?
zum anderen ist es komplett uberflussig, dass du auf ein "danke" was an leute gerichtet war, die geholfen haben..noch deine sinnlosen kommentare zuschreibst...
ausserdem ist es manchmal so, dass man sich aufs abi vorbereitet und kurz davor vorabi macht.....da kann man sich nicht die ganze zeit mit java beschaftigen....ausserdem....wurde ich dir raten: Erst lesen...dann sinnlose kommentare schreiben....denn ich hatte schon geschrieben, dass ich mich mit dem Thema schon davor auseinandersetzte....und alles fertig gemacht hatte..mir fehlte fur die presentation nur noch ein programm zu bubblesort aufzustelen, den die anderen bereiche 
der presentation hatte ich schon...aber auch dieses programm habe ich vorher angekuckt versucht das zu verstehen....dann..aber am letzten tag hilfe angefordert..wo ich noch probleme gesehn hatte....
ich denke..nun könnte man den thread schliessen...sonst wird da wieder ne diskussion die zum thema nichts taugt...


----------



## timbeau (11. Jan 2011)

Nein ich erwarte keinen Respekt, siehs als Denkanstoß an. Abi und Vorabi bist du nicht der 1. also tu mal nicht so als wär das was ganz besonderes. Und wenn du schreibst, dass du dich damit beschäftigt hast, gleichzeit aber 0 Ahnung von Java hast, was meinst du wie glaubhaft das rüberkommt? 

Ich schreibe jetzt, weil ich vorher keine Lust hatte. Gibt ja genügend Leute die hier Fragen stellen und denen man anmerkt, dass sie sich vorher wirklich mit dem jeweiligen Problem auseinandergesetzt haben.


----------



## ARadauer (11. Jan 2011)

> zu allererst ist es doch meine sache wie ich lerne oder nicht?


nein, weil wenn du so lernst wie jetzt müssen die anderen dein hartz4 geld mitfinazieren!


----------



## Final_Striker (11. Jan 2011)

ARadauer hat gesagt.:


> nein, weil wenn du so lernst wie jetzt müssen die anderen dein hartz4 geld mitfinazieren!



:lol:


----------



## asdasdjk (11. Jan 2011)

-BadBoy- hat gesagt.:


> vielen dank..aber das wusste ich schon vorher



warum fragst du dann danach? wer in der schule nicht mitkommt und sich nicht anstrengen will, bekommt eine schlechte note. so war's früher - so ist es heute hoffentlich auch noch.


----------



## Andi_CH (12. Jan 2011)

asdasdjk hat gesagt.:


> wer in der schule nicht mitkommt und sich nicht anstrengen will, bekommt eine schlechte note. so war's früher - so ist es heute hoffentlich auch noch.





-BadBoy- hat gesagt.:


> ...und ne 3 bekommen aber..immerhin....



Offensichtlich nicht :-(


----------



## -BadBoy- (12. Jan 2011)

ARadauer hat gesagt.:


> nein, weil wenn du so lernst wie jetzt müssen die anderen dein hartz4 geld mitfinazieren!



haha...lustig 

aber keine angst.......so wirds nicht sein...



Andi_CH hat gesagt.:


> Offensichtlich nicht :-(



daraus schliesst man..ich habe mich mittelmassig angestrengt.....ich wurde sagen..JA bei Info trat dies im punkt java zu.....



asdasdjk hat gesagt.:


> warum fragst du dann danach? wer in der schule nicht mitkommt und sich nicht anstrengen will, bekommt eine schlechte note. so war's früher - so ist es heute hoffentlich auch noch.



ich fragte danach weil: ich wusste schon wie Bubblesort geht...wie man aber die theorie in JAVA praktisch umsetzt...das wusste ich nicht.


----------



## timbeau (12. Jan 2011)

Gibts einen Grund warum du nicht innerhalb eines Posts deine Antowrten schreiben kannst? Künstlich die Postings hochsetzen? 

'...' machen einen Satz übrigens nicht wertvoller.


----------



## Fasko (29. Mai 2011)

Hallo,

kann mir jemand sagen was ich bei meinem Bubblesort-Programm falsch mache?


```
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;
			
			for (int i = 0; i<bubbleman.length; 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
		

	}

}
```

Ausgabe:
Durchlauf 0
Durchlauf 1
Durchlauf 2
Durchlauf 3
Durchlauf 4


Eclipse geht anscheinend nicht in die letzte ForSchleife rein... warum? :bahnhof:

MfG


----------



## Gast2 (29. Mai 2011)

Endlosschleife bei der do-whille-schleife?
Setz da mal nen sysout rein. 

PS: Dafür hättest du dir auch nen eigenen Thread aufmachen können


----------



## Fasko (29. Mai 2011)

EikeB hat gesagt.:


> Endlosschleife bei der do-whille-schleife?
> Setz da mal nen sysout rein.
> 
> PS: Dafür hättest du dir auch nen eigenen Thread aufmachen können



Ich wollte nicht so egoistisch sien. Am Ende kriege ich noch zu hören, dass ich auch die SuFu hätte nutzen können :-D

Sysout reingesetzt...

Test
Durchlauf 0
Durchlauf 1
Durchlauf 2
Durchlauf 3
Durchlauf 4

Anscheinend durchläuft der die Schleife nur einmal...


----------



## XHelp (29. Mai 2011)

Ohne es genauer angeschaut zu habe: es tippe mal darauf dass es eine ArrayIndexOutOfBounds-Exception fliegt. Es liegt daran, dass deine for-Schleife nur bis 
	
	
	
	





```
bubbleman.length-1
```
 laufen sollte.
Wenn dem so ist, hätte man auch selber auf die Idee kommen können die Exception mitzuposten.


----------



## Gast2 (29. Mai 2011)

XHelp hat gesagt.:


> Es liegt daran, dass deine for-Schleife nur bis
> 
> 
> 
> ...


Tut sie doch:

```
i<bubbleman.length
```


----------



## XHelp (29. Mai 2011)

Naja, aber da wird ja der Index 
	
	
	
	





```
i+1
```
 angesprochen, also sollte es 
	
	
	
	





```
i<bubbleman.length-1
```
 heißen


----------



## Fasko (29. Mai 2011)

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.


----------



## XHelp (29. Mai 2011)

Fasko hat gesagt.:


> Damit sollte es in meinen Augen nichts zu tun haben.



Damit das ganze etwas handfester wird, habe ich den Code gerade ausprobiert. Die vollständige Ausgabe lautet:

```
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 
	
	
	
	





```
4
```
 und 
	
	
	
	





```
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 
	
	
	
	





```
-1
```
 in die Schleife und es klappt.


----------



## Fasko (29. Mai 2011)

Das habe ich nun gemacht... gleiche Ausgabe ... 


```
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 (29. Mai 2011)

Fasko hat gesagt.:


> Das habe ich nun gemacht... gleiche Ausgabe ...



Dann mach es richtig  Alleine schon weil du "Test"-Ausgabe reingenommen hast, kann es nicht die gleiche sein.


----------



## Asgar13 (30. Mai 2011)

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


----------



## XHelp (30. Mai 2011)

Asgar13 hat gesagt.:


> 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.


----------



## Fasko (30. Mai 2011)

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


```
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:


----------



## XHelp (30. Mai 2011)

Wo kommt jetzt plötzlich die else-Anweisung her? Die muss da weg.


----------



## Fasko (30. Mai 2011)

Auch ohne komme ich keinen Schritt weiter...


```
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


----------



## XHelp (30. Mai 2011)

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


----------



## Fasko (30. Mai 2011)

Ich mach das jetzt einfach so:


```
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 (30. Mai 2011)

XHelp hat gesagt.:


> 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# 
Das hat zwar das System enorm verlangsamt und zu blöden Fensterchen geführt, aber es hat mich bei der Bedienung nicht verwirrt.


----------



## XHelp (30. Mai 2011)

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 (30. Mai 2011)

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


```
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 (8. Jun 2011)

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?


```
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 (8. Jun 2011)

Und warum kannst du 
	
	
	
	





```
i
```
 nicht nehmen? Wie genau lautet die Fehlermeldung? In welcher Zeile etc...
Ein weiteres Problem ist, dass die Methode 
	
	
	
	





```
sortieren
```
 nicht statisch ist.


----------



## gift99 (8. Jun 2011)

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 (8. Jun 2011)

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


----------



## Dekker (8. Jun 2011)

"insertionsort java" in Google suchen brachte als 1. Eintrag das hier.

Vielleicht nächstes mal selbst probieren mit dem googlen


----------



## Crian (9. Jun 2011)

Fasko hat gesagt.:


> Nichts gegen Java...
> Aber ich sehne mich nach meinem Visual Studio für C#



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.


----------

