BubbleSort

Efsane41

Mitglied
Hallo Leute, mir geht's darum die Stellen zu verstehen die ich in Klammern gesetzt habe. Ich wäre echt froh, wenn mir diese Stellen jemand im "for dummies" Stil erklären könnte.

Java:
import java.io.*;

public class bubblesort{
	public static void main(String[] args) {
	
		int[] reihung={1,5,8,2,7,4};
		int[] sortiert=bubblesort(reihung);
		
		for (int i = 0; i<sortiert.length; i++) {// WIESO HIER SCHON EINE FOR-SCHLEIFE?
			System.out.print(sortiert[i] + ", ");
		}
	
	}
	
	public static int[] bubblesort(int[] liste){
	
		int temp;//WIESO WIRD HIER EINE VARIABLE DEKLARIERT ?
		
		for(int i=1; i<liste.length; i++){//WIESO SCHON WIDER EINE FOR-SCHLEIFE ?
			for(int j=0; j<liste.length-i; j++){//NOCH EINE FOR-SCHLEIFE ? WAS BEDEUTET -i ?
				
				if(liste[j]>liste[j+1]){//WAS BEDEUTET DIESES +1? WIE GEHT DAS, DASS liste[j] GRÖßER IST ALS liste[j+1]
					temp=liste[j];
					liste[j]=liste[j+1];
					liste[j+1]=temp;
				}				
			}
		}
		return liste;
	}
}

Eigentlich könnte man mir gleich das ganze Ding erklären.

Danke im voraus.
 
Zuletzt bearbeitet:
Betrachte diese Methoden getrennt von einander
Java:
	public static void main(String[] args) {
	
		int[] reihung={1,5,8,2,7,4};
		int[] sortiert=bubblesort(reihung);
		
		for (int i = 0; i<sortiert.length; i++) { WIESO HIER SCHON EINE FOR-SCHLEIFE?
			System.out.print(sortiert[i] + ", ");
		}
	
	}

Zuerst wird ein Array
Code:
reihung
definiert, dieses Array wird an die Methode
Code:
bubblesort
übergeben.
Danach gibt es eine for-Schleife zur Ausgabe des sortierten Arrays.

Java:
	public static int[] bubblesort(int[] liste){
	
		int temp;//WIESO WIRD HIER EINE VARIABLE DEKLARIERT ?
		
		for(int i=1; i<liste.length; i++){//WIESO SCHON WIDER EINE FOR-SCHLEIFE ?
			for(int j=0; j<liste.length-i; j++){//NOCH EINE FOR-SCHLEIFE ? WAS BEDEUTET -i ?
				
				if(liste[j]>liste[j+1]){//WAS BEDEUTET DIESES +1? WIE GEHT DAS, DASS liste[j] GRÖßER IST ALS liste[j+1]
					temp=liste[j];
					liste[j]=liste[j+1];
					liste[j+1]=temp;
				}				
			}
		}
		return liste;
	}
}

Die Variable
Code:
temp
wird zum Tauschen von 2 Werten gebraucht. ("Zwischenspeicher")
Beispiel: Du und ich sitzen jeweils auf einem Sessel. Wie tauschen wir unsere Plätze wenn nur einer von uns beiden zur gleichen Zeit stehen darf? -> Wir nehmen uns einen 3.Sessel zur Hilfe

Die 1.for-Schleife brauchst du um dein Array welches du sortieren willst durchzugehen.
Die 2.for-Schleife brauchst du um den aktuellen Wert mit den restlichen X Werten zu vergleichen. Das
Code:
liste.length-i
ist eine ganz normale Anweisung und diesem Fall eine Subtraktion (die Länge des Arrays - dem Wert i)

Code:
if(liste[j] > liste[j+1])
Hier prüfst du ob der Wert an Stelle/Index
Code:
j
im Array größer ist als der Wert an Stelle/Index
Code:
j+1

Bitte gehen nochmal die Grundlagen von Java durch.
 
Zuletzt bearbeitet:

Zurück
Oben