BubbleSort

Tearchen

Mitglied
Java:
public class BubbleSort2{
	public static void bubble(int[] a){
		
		boolean end;
		int i = 0;
		int j = 0;
		
		do{
			end = true;
			i = 1;
			
			do{
				if(a[i-1] < a[i]){
					
					int buff = a[i];
					a[i] = a[i-1];
					a[i-1] = buff;
					end = false;
				}
				i++;
			}
			
			while(i < a.length - j);
			j++;
		}
		
		while(end == false);
	}
	
	public static void main(String[] args){
		
		int[] a = {12,18,7,2,8,8,4,15};
		bubble(a);
	}
}

Moin,
sieht ja recht einfach aus, versteh ich das richtig ?

erster Durchlauf
i = 1
a[0] = 12 < a[1] = 18
buff = 18
a[1] ist 18 = a[0] ist 12
a[0] ist 12 = buff

Hier wird 12 und 18 vertauscht

zweiter Durchlauf
a[1] = 18 < a[2] = 7
macht also nix ?

......

vierter Durchgang
i = 4
a[3] = 2 < a[4] = 8
buff = 8
a[4] ist 8 = a[3] ist 2
a[3] ist 2 = buff


12 18 7 2 8 8 4 15 --- Array vor Durchlauf der äußeren do-while-Schleife
18 12 7 2 8 8 4 15 --- Array nach 1. Durchlauf 12 und 18 werden vertauscht
18 12 7 2 8 8 4 15 --- 2. Durchlauf passiert nix
18 12 7 2 8 8 4 15 --- 3. Durchlauf passiert nix
18 12 7 8 2 8 4 15 --- 4. Durchlauf 2 und 8 werden vertauscht
18 12 7 2 8 8 4 15 --- 5. Durchlauf passiert nix
 
Zuletzt bearbeitet:
Naja nicht ganz...
Hier mal ein parr sysouts der zustände...
Code:
tausche 12 18
18 12 7 2 8 8 4 15 
kein tausch 18 12
18 12 7 2 8 8 4 15 
kein tausch 12 7
18 12 7 2 8 8 4 15 
kein tausch 7 2
18 12 7 2 8 8 4 15 
tausche 2 8
18 12 7 8 2 8 4 15 
kein tausch 8 2
18 12 7 8 2 8 4 15 
tausche 2 8
18 12 7 8 8 2 4 15 
kein tausch 8 2
18 12 7 8 8 2 4 15 
tausche 2 4
18 12 7 8 8 4 2 15 
kein tausch 4 2
18 12 7 8 8 4 2 15 
tausche 2 15
18 12 7 8 8 4 15 2 
kein tausch 15 2
18 12 7 8 8 4 15 2 
kein tausch 18 12
18 12 7 8 8 4 15 2 
kein tausch 12 7
18 12 7 8 8 4 15 2 
tausche 7 8
18 12 8 7 8 4 15 2 
kein tausch 8 7
18 12 8 7 8 4 15 2 
tausche 7 8
18 12 8 8 7 4 15 2 
kein tausch 8 7
18 12 8 8 7 4 15 2 
kein tausch 7 4
18 12 8 8 7 4 15 2 
tausche 4 15
18 12 8 8 7 15 4 2 
kein tausch 15 4
18 12 8 8 7 15 4 2 
kein tausch 18 12
18 12 8 8 7 15 4 2 
kein tausch 12 8
18 12 8 8 7 15 4 2 
kein tausch 8 8
18 12 8 8 7 15 4 2 
kein tausch 8 7
18 12 8 8 7 15 4 2 
tausche 7 15
18 12 8 8 15 7 4 2 
kein tausch 15 7
18 12 8 8 15 7 4 2 
kein tausch 18 12
18 12 8 8 15 7 4 2 
kein tausch 12 8
18 12 8 8 15 7 4 2 
kein tausch 8 8
18 12 8 8 15 7 4 2 
tausche 8 15
18 12 8 15 8 7 4 2 
kein tausch 15 8
18 12 8 15 8 7 4 2 
kein tausch 18 12
18 12 8 15 8 7 4 2 
kein tausch 12 8
18 12 8 15 8 7 4 2 
tausche 8 15
18 12 15 8 8 7 4 2 
kein tausch 15 8
18 12 15 8 8 7 4 2 
kein tausch 18 12
18 12 15 8 8 7 4 2 
tausche 12 15
18 15 12 8 8 7 4 2 
kein tausch 15 12
18 15 12 8 8 7 4 2 
kein tausch 18 15
18 15 12 8 8 7 4 2

Java:
do{
                if(a[i-1] < a[i]){
                    
                    int buff = a[i];
                    a[i] = a[i-1];
                    a[i-1] = buff;
                    end = false;
                } else {
                i++;
              }
            }

Hier mal mit else, der zähler wird nur im else fall hochgezählt. Darum prüft er die "selben" stellen so lange bis links größer als rechts ist.
 
Zuletzt bearbeitet:

Zurück
Oben