Guten Morgen euch allen,
ich soll hier ein CountingSort schreiben und scheitere irgendwie an der Stelle, die das Originalarray mit dem Wertebereich vergleichen soll. Hab wohl nen einfachen Denkfehler drin, seh ihn aber leider nicht selbst.
Hier mein Code bisher (Das problem beginnt in Zeile 37):
Die Konsole gibt mir folgendes aus:
[5, 7, 5, 10, 4, 3, 25, 2, 5, 9, 5, 3, 3, 5, 5, 4] //Eingabe Array, stimmt
25 //maxValue, stimmt
2 //minValue, stimmt
[2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25] //Wertebereich, stimmt
[1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1] //Häufigkeit, erkennt scheinbar jedes Element nur einmal
Wäre klasse, wenn mir da jemand ein Beutelchen Erleuchtung spendieren würde.
Bis dahin Grüße,
Markus
ich soll hier ein CountingSort schreiben und scheitere irgendwie an der Stelle, die das Originalarray mit dem Wertebereich vergleichen soll. Hab wohl nen einfachen Denkfehler drin, seh ihn aber leider nicht selbst.
Hier mein Code bisher (Das problem beginnt in Zeile 37):
Java:
import java.util.Arrays;
public class CountingSort
{
public static int[] count(int[] a)
{
int maxValue=0;
System.out.println(Arrays.toString(a));
for(int i=0;i<a.length;i++)
{
if (a[i]>maxValue)
{
maxValue=a[i];
}
}
System.out.println(maxValue);
int minValue=maxValue;
for (int h=0;h<a.length;h++)
{
if(a[h]<minValue)
{
minValue=a[h];
}
}
System.out.println(minValue);
int[] b= new int[maxValue+1-minValue];
for(int j=0;j<b.length;j++)
{
b[j]=minValue+j;
}
System.out.println(Arrays.toString(b));
int[] c=new int[b.length];
for (int k=0;k<b.length;k++) //Führt für jedes Element von b die nächste Schleife aus
{
for(int l=0;l<a.length;l++) //Führt das If für jedes Element von a aus
{
if (a[l]==b[k])
{
int counter=0;
counter++; //Zählt die Häufigkeit des jeweiligen Wertes
c[k]=counter; //Speichert die Häufigkeit in c
}
}
}
System.out.println(Arrays.toString(c));
return c;
}
}
Die Konsole gibt mir folgendes aus:
[5, 7, 5, 10, 4, 3, 25, 2, 5, 9, 5, 3, 3, 5, 5, 4] //Eingabe Array, stimmt
25 //maxValue, stimmt
2 //minValue, stimmt
[2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25] //Wertebereich, stimmt
[1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1] //Häufigkeit, erkennt scheinbar jedes Element nur einmal
Wäre klasse, wenn mir da jemand ein Beutelchen Erleuchtung spendieren würde.
Bis dahin Grüße,
Markus
Zuletzt bearbeitet: