Kann mir jemand folgenden Quellcode erklären?

... komplette Frage anzeigen

2 Antworten

Hallo

import java.util.*;

public class BucketSort{

public static void sort(int[] a, int maxVal) {

int [] bucket=new int[maxVal+1];

for (int i=0; i<bucket.length; i++) {
bucket[i]=0;
}
System.out.println("leere Eimer: " + Arrays.toString(bucket));
for (int i=0; i<a.length; i++) {
bucket[a[i]]++;
System.out.println(i+". Element Wert "+ a[i]);
System.out.println("Eimerbelegung: " + Arrays.toString(bucket));
}

int outPos=0;
for (int i=0; i<bucket.length; i++) {
for (int j=0; j<bucket[i]; j++) {

a[outPos++]=i;
}
}

}

public static void main(String[] args) {
int maxVal=5;
int [] data= {5,3,0,2,4,1,0,5,2,3,1,4};

System.out.println("Before: " + Arrays.toString(data));
sort(data,maxVal);
System.out.println("After: " + Arrays.toString(data));

} }

Das Prinzip ist kurz gesagt: 

int [] bucket ist die Deklaration und Speicherresevierung  eines Arrays mit Elementen vom Datentyp Integer, nachfolgend die Eimer genannt

Es werden Eimer erzeugt und zwar soviel Eimer wie es maximal anzunehmende Werte gibt. Dann werden die zu sortieren Elemente durchgegangen und dann den Eimern gemäß ihren Wert zugeordnet. Also  das 2. Element den Wert 3 dann kommt es in den 3 Eimer-

Dann werden die Eimer im letzten Codeblock hintereinander mit d3er Anzahl der Elemente  hintereinander ausgegeben.

Um das besser verstehen zu können kannst Du mal die Daten einfach ändern sehen, was dann passiert.  Ich habe im Quelltext noch einige print Anweisungen reingepinnt.  

Hoffe geholfen zu haben.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von LeBonyt
02.03.2017, 19:01

Danke für den Stern. Viel Erfolg beim Coden..

0

Also der Anfang wäre erstmal den Unterschied zwischen Java und JavaScript zu googeln.

Wenn du das dann verstanden hast, dann wäre dein nächster Schritt Quellcode nachzuvollziehen.

Denn: Willst etwas über Java oder über JavaScript wissen?

Wenn du etwas über JavaScript wissen willst, dann ist es unnötig dir diesen Java-Quellcode zu erklären.

Antwort bewerten Vielen Dank für Deine Bewertung

Was möchtest Du wissen?