Kann mir jemand folgenden Quellcode erklären?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

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.

46

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.

Javaerror#2 Was bedeutet dieser Error und wie löse ich ihn auf?

Ich habe den Error

"Versuch3.java:98: error: method animeS in class Versuch3 cannot be applied to given types; animeS( ); ^ required: int found: no arguments reason: actual and formal argument lists differ in length 1 error"

und weiß nicht, was er bedeutet, hier die Codestelle:

public static void animeS(int x)

{
    System.out.println("----------------------------");
    System.out.println("--                        --");
    System.out.println("-- Erstelle Speicherstand --");
    System.out.println("-- Fortschritt: "+x+" %     ---");
    System.out.println("--                        --");
    System.out.println("----------------------------");
}

public static void anim1()
{
    animeS(15);
    System.currentTimeMillis();
    animeS(30);
    System.currentTimeMillis();
    animeS(40);
    System.currentTimeMillis();
    animeS(55);
    System.currentTimeMillis();
    animeS(75);
    System.currentTimeMillis();
    animeS(85);
    System.currentTimeMillis();
    animeS(95);
    System.currentTimeMillis();
    animeS(99);
    System.currentTimeMillis();
    animeS( );
}
...zur Frage

Kann mir jemand diesen Java-Code für das Bubble Sort Verfahren erklären?

Hi, kann mir jemand diesen Java Code für das Bubble Sort Verfahren in Bezug auf folgende Fragen erklären?

public class BubbleSort { 
public static void sortiere(int[] x) {
  boolean unsortiert=true;
  int temp;
  
  while (unsortiert){
     unsortiert = false;
     for (int i=0; i < x.length-1; i++) 
        if (x[i] > x[i+1]) {                      
           temp       = x[i];
           x[i]       = x[i+1];
           x[i+1]     = temp;
           unsortiert = true;
        }          
  } 
}

public static void main(String[] args) {
  int[] liste = {0,9,4,6,2,8,5,1,7,3};
  sortiere(liste);
  for (int i=0; i<liste.length; i++) 
     System.out.print(liste[i]+" ");    
   } 
}

Der Code entstammt von dieser Seite: http://www.java-uni.de/index.php?Seite=85 Dort wird er aber nicht erklärt.. - Was bedeutet der Befehl "boolean"? - Was meint man mit int temp? - Wie läuft die while-Schleife ab, wenn innerhalb davon eine for-Schleife und innerhalb davon verschiedene if-Bedingungen aufgelistet sind?

Ich hoffe jemand nimmt sich die Zeit. Wär Euch sehr dankbar. :)

...zur Frage

Brauche Hilfe bei einem Java Programm. Siehe unten.?

Ich kenne die begriffe "male" nicht und bräuchte das Programm ohne diesem male. Also die Ausgabe soll ein X aus " * " sein. Kann mir jemand helfen dieses programm nur mit schleifen und ohne diesem "male"

package x.zeichnen;

public class XZeichnen {

public static void main(String[] args) {

    int höhe = 5;
    int höhe2 = höhe / 2;
    int shift = höhe % 2; // 0 der 1, je nach gerade/ungerade

    for (int i = 1; i <= höhe; i++) {
        int k = i > höhe2 ? höhe - i + 1 : i;
        // k zur Untersuchung am besten mit System.out.println am Ende der Zeile loggen, 
        // zählt anfangs hoch wie i, ab der Mitte wieder bis auf 1 runter 
        int abstand = höhe2 - k;
        male(k - 1, ' ');
        System.out.print("*");
        if (abstand >= 0) {
            male(abstand * 2 + shift, ' ');
            System.out.print("* ");
        } // wenn nicht, dann ist gerade die Mitte dran
        System.out.println();
    }
}

private static void male(int n, char c) {
    for (int j = 1; j <= n; j++) {
        System.out.print(c);
    }
}

}

...zur Frage

Was möchtest Du wissen?