ich habe mich mal an die Quicksort-Aufgabe unter dem Arrays-Reiter gewagt. Mein Code besteht auch 7 von 8 Tests, der einzige Failerreportzeigt mir jedoch ein "timed out after 50 milliseconds" an. Ich nehme also an, dass ich die Vorgabe an die Komplexität nicht erfülle. Könnte sich jemand meinen Code ansehen und mir einen Tipp geben, wie ich das effizienter gestalten kann?
Vielen Dank im Vorraus!
Code: Alles auswählen
{
if (array == null) return null;
if (array.length <= 1 || sameInts(array)) return array;
int counterL = 0; //length of left subarray
int counterR = 0; //length of right subarray
for(int i = 1; i < array.length; i++){
if(array[i].compareTo(array[0]) < 0){
counterL++;
}
else{
counterR++;
}
}
Listobject[] left = new Listobject[counterL];
Listobject[] right = new Listobject[counterR];
int i1 = 0; //pointer for left
int i2 = 0; //pointer for right
Listobject[] pivot = new Listobject[1];
pivot[0] = array[0];
for(int i = 1; i<array.length; i++){
if(array[i].compareTo(array[0]) < 0){
left[i1] = array[i];
i1++;
}
if(array[i].compareTo(array[0]) >= 0){
right[i2] = array[i];
i2++;
}
}
return combineArrays(quicksort(left) ,pivot, quicksort(right));
}