Bubblesort - Falsche Sortierung

grenzreiter

Mitglied
Hi,

ich bräuchte ein wenig Hilfe. Ich habe eine einfaches Bubblesort programmiert...naja, so ziemlich. Leider habe ich jetzt das Problem, dass er zwar sortiert, aber nicht von 0 - 5. Aber was mache ich falsch.

Java:
public class Bubblesort {

	public static void main(String[] args) {
	
// Deklaration + Initialisierung

        int[] aArray = new int[6];
	
	aArray[0] = 5;
	aArray[1] = 4;
	aArray[2] = 3;
	aArray[3] = 2;
	aArray[4] = 1;
	aArray[5] = 0;
	
	int iTmp = 0;
	
// Ausgabe unsortiertes Array

	for(int i=0; i<6; ++i) {
		System.out.print(aArray[i]+ "" + "     ");
	
// Bubblesort	
		
	}
	for(int i=0; i < 5; ++i){
		if(aArray[i] > aArray[i+1]);{
			iTmp = aArray[i];
			aArray[i] = aArray[i+1];
			aArray[i+1] = iTmp;
		}
// Ausgabe sortiertes Array		

	}
	for(int i=0; i<6; ++i) {
		System.out.print(aArray[i] + " ");
	}
	}
}

ICh habe irgendwo im Bubblesort einen Fehler, aber ich komme nicht drauf, wo er ist. Wer könnte mir den bitte einen Tipp geben?

GRuß

grenzreiter
 
Drei Sachen:
0. Ersetzte in den Abbruchbedingungen Deiner For-Schleifen die magic numbers durch aArray.length
1. Die Prä-Inkrements (++i) sehen mir suspekt aus. Ersetze sie durch i++
2. Es reicht nicht, den Array nur einmal durch zu gehen.
 
Let me google that for you:
Wikipedia: Bubblesort (Pseudocode)
Java:
prozedur bubbleSort( A : Liste sortierbarer Elemente ) 
  n := Länge( A )
  wiederhole
    vertauscht := falsch
    für jedes i von 1 bis n - 1 wiederhole 
      falls A[ i ] > A[ i + 1 ] dann
        vertausche( A[ i ], A[ i + 1 ] )
        vertauscht := wahr
      ende falls
    ende für
    n := n - 1
  solange vertauscht und n > 1
prozedur ende
 
Zuletzt bearbeitet:
Möglich wäre sowas
(keine Garantie, in Safari getippt)
Java:
import java.util.Random;

public class Sort {
private int[] array;
public Sort() {
array = new int[6];
}

public void erzeugen() {
Random zufall = new Random();
for (int i=0;i<20;i++)
array[i] = zufall.nextInt(1000);
}

private void tauschen(int a, int b) {
int temp = array[a];
array[a] = array[b];
array[b] = temp;
}

public void bubblesort() {
for (int i=0; i<5;i++)
for(int j=0;j<5-i;j++)
if(array[j]>array[j+1])
tauschen(j,j+1);
}

........
 
1. googlen und vergleichen(java bubblesort)
2. Forum suche: Thema gab es mindestens schon 3 mal
3. Pseudocode in Wikipedia
4. Meine ich, das es in Java eine eigene Methode gibt, die du nur aufrufen müsstest
5. Lass das bitte keine Hausaufgabe sein, sonst wärst du im falschen Themengebiet.
 

Zurück
Oben