# Einfaches Bubblesort



## Kegellachs (4. Nov 2009)

Hi,
Ich muss für die Uni ein einfaches Programm zum Sortieren 3er Werte schreiben.
Ich habe bereits eine funktionierende Version, die mit 3 "Ausweichvariablen" und jeder Menge if-Befehle arbeitet.
Ist natürlich seeehr umständlich und nicht Sinn der Sache ;-)
Da habe ich mich an die Schule und Bubblesort erinnert. Leider weiss ich nur noch ganz grob, wie es geht und habe Probleme mit dem Array.
Bitte schaut doch mal in meinen Quelltext und sagt mir, wo der Fehler liegt.

P.S.: Hätte ja auch bei Google gesucht, aber einfach nur den fertigen Code abzukopieren ist auch nicht ganz sinnvoll, ich muss ja wissen, wo mein Fehler liegt, damit ich es beim nächsten Mal besser machen kann.



```
class A2 {

  public static void main (String[]args) {

    int a = Integer.parseInt(args[0]);
    int b = Integer.parseInt(args[1]);
    int c = Integer.parseInt(args[2]);
    int [] Eingaben = {a,b,c};
    int n = Eingaben.length;
    int tausch;

      for (int i = 0; i <= n; i++) {

	if (Eingaben[i] > Eingaben[i+1]) {
    
	  tausch = Eingaben[i+1];
	  Eingaben[i+1] = Eingaben[i];
	  Eingaben[i] = tausch;

	}
 
      }

  }
```


----------



## Marco13 (4. Nov 2009)

Das ist noch BubbleSort. Bei Bubblesort sind zwei Schleifen verschachtelt

```
mache {
    das was in deiner Schleife gemacht wird
} solange (eine vertauschung gemacht wurde)
```


----------



## DerEisteeTrinker (4. Nov 2009)

!!!!!!!TIP!!!!!!!! VORSICHT ES KÖNNTE EIN SPOILER SEIN

BubbleSort braucht zwei Schleifen


----------



## Painii (4. Nov 2009)

Kegellachs hat gesagt.:


> Bitte schaut doch mal in meinen Quelltext und sagt mir, wo der Fehler liegt.


Welcher Fehler? Wäre gut zu wissen...


----------



## Kegellachs (4. Nov 2009)

Wow, das ging schnell^^

Ich bekomme für Zeile 14 einen Fehler, den ich nicht verstehe, da nur ausgegeben wird, dass ein Fehler vorliegt, nichts konkretes wie ein fehlendes ; o.ä.


----------



## DerEisteeTrinker (4. Nov 2009)

weil deine schleife einen schritt zu viel zu lässt. du stehst schon am ende des array und willst dann das nächste element mit Eingaben[i+1] aufrufen


----------



## Kegellachs (4. Nov 2009)

Also... Die Schleife funktioniert erstmal so weit ,aber im letzten Durchgang wird sozusagen ein nicht vorhandenes Feld kontrolliert, das dann zum Absturz führt?

Richtig so weit? ;-)


----------



## DerEisteeTrinker (4. Nov 2009)

:toll::applaus:


----------



## Kegellachs (4. Nov 2009)

Hmm.. habe mal das 
	
	
	
	





```
for (int i = 0; i <= n; i++)
```
 mit einem 
	
	
	
	





```
i < n
```
 "verbessert". Gleicher Fehler... Wenn ich bloss meine Unterlagen aus der Schule aufbewahrt hätte, da sind wir ohne boolesche Operationen ausgekommen, wie sie überall im Internet beim Bubblesort verwendet werden ausgekommen


----------



## faetzminator (4. Nov 2009)

[c]for (int i = 0; i < n - 1; i++)[/c]


----------



## eRaaaa (4. Nov 2009)

Kegellachs hat gesagt.:


> Hmm.. habe mal das
> 
> 
> 
> ...



weil du innerhalb immernoch auf ende+1 zugreifst  musst du ../edit: siehe post darüber 

Eingaben[i+1]; <---


----------



## Kegellachs (4. Nov 2009)

Besser, aber nicht perfekt. Jetzt wird nur ein Durchlauf gemacht, sodass auch nur die erste Zahl umsortiert wird.
Muss ich wohl noch etwas tüfteln.
Schade, dass nicht alles so leicht wie HTML ist


----------

