Arbeiten an einer Methode, die einen Drehpunkt zum Suchen des k-ten kleinsten Elements in einem Array unter Verwendung des Median-Median-Algorithmus auswählt; jedoch scheint es nicht pickCleverPivot nach der Rückkehr zu verlassen:Methode wird nicht nach return-Anweisung beendet
return median(A,left,right);
Wenn es hilft, setzt voraus, dass zunächst 0 ist links, rechts ist 9 und A {1,2,3,4,5,6 , 7,8,9,10}.
Hier ist die Methode:
private static int pickCleverPivot(int left, int right, int[] A){
int index = 0;
if((right-left) <= 5){
return median(A,left,right);
}
for(int i = 0; i < (A.length+5-1)/5; i++){ //Ceiling of n/5 = (A.length+5-1)/5).
int R = left+4;
if(R > right){
R = right;
}
int med_index = median_index(A,left,R);
swap(A, med_index, index);
index++;
left +=5;
}
left = 0;
return pickCleverPivot(left, left+(A.length+5-1)/5, A);
}
Umm, wenn Ihr lft 0 ist und rechts ist 9, rechts - links = 9 & es ist> 5, so wird es diese Rückkehr Aussage nicht eingeben, ja? Dann geht es weiter bis zum Median_index und Swap, was der Flaschenhals sein könnte. – Foleosy