tag zusammen,
ich missbrauch ja nicht gern solche foren, aber ich bin sicher, dass sich hier viele leute tummeln die mir bei diesen problem helfen können *g*
folgende aufgabe hab ich: ich soll ein rekursives programm schreiben, das wie quicksort ein feld von zahlen sortiert. dazu soll man 3 methoden schreiben die ein feld übergeben bekommen und eines zurückgeben, das alle elemente enthält die kleiner, gleich oder größer einem bestimmten element k sind (k=f[f.length/2] war so vorgegeben). das programm steht jetzt soweit, nur hab ich anscheinend ein kleines problem beim zusammensetzen des ergebnisfeldes. da bekomme ich ein ArrayindeyOutOfBound-Fehler...also stimmt was mit den arraygrenzen nicht so ganz.
nach langem rumsuchen bin ich anscheinend so blind geworden, dass ich den fehler nicht erkenn...kann mir da einer von euch helfen?
der code(java):

Code:
 


public class AufgabeZwei{
//public int[] f = {4,3,5,9,1,5,6,3,0,8};
public int[] f = {4,3,1};
public int[] kleiner(int[] f){

if(f.length<=1) return f;
int k = f[f.length/2];
int count=0;
for(int i=0; i<f.length; i++) {if (f[i]<k) count++; }
int[] fneu = new int[count];
for(int i=0,j =0; i <f.length;i++){if(f[i]<k){fneu[j]=f[i];j++;}}
return fneu;
}

public int[] gleich(int[] f){

if(f.length<=1) return f;
int k = f[f.length/2];
int count=0;
for(int i=0; i<f.length; i++) {if (f[i]==k) count++; }
int[] fneu = new int[count];
for(int i=0,j =0; i <f.length;i++){if(f[i]==k){fneu[j]=f[i];j++;}}
return fneu;
}

public int[] groesser(int[] f){

if(f.length<=1) return f;
int k = f[f.length/2];
int count=0;
for(int i=0; i<f.length; i++) {if (f[i]>k) count++; }
int[] fneu = new int[count];
for(int i=0,j =0; i <f.length;i++){if(f[i]>k){fneu[j]=f[i];j++;}}
return fneu;
}

public int[] Quicksort(int[] f){
if(f.length<=1) return f;
int[] rueckgabe=Quicksort(kleiner(f));
int[] rueckgabe2=gleich(f);
int[] rueckgabe3=Quicksort(groesser(f));
int [] fneu = new int[rueckgabe.length+rueckgabe2.length+rueckgabe3.length];
if(rueckgabe.length!=0){for(int i=0; i <=rueckgabe.length-1;i++){fneu[i]=rueckgabe[i];}}
if(rueckgabe2.length!=0){for(int i =rueckgabe.length; i <=rueckgabe.length+rueckgabe2.length-1;i++){fneu[i]=rueckgabe2[i];}}
if(rueckgabe3.length!=0){for(int i =rueckgabe.length+rueckgabe2.length; i <=fneu.length-1;i++){fneu[i]=rueckgabe3[i];}}
return fneu;
}

public void test(){
int ausgabe[]=Quicksort(f);
System.out.println("Ausgabe:");
for(int i=0;i<ausgabe.length;i++){System.out.println(ausgabe[i]);}
}
}



ich hoffe mal die formatierung geht nicht ganz flöten^^