Working on a method that picks a pivot for finding the kth smallest element in an array using median of medians algorithm; however it doesn't seem to exit pickCleverPivot after the return:
return median(A,left,right);
If it helps, assume that initially left is 0, right is 9, and A is {1,2,3,4,5,6,7,8,9,10}.
Here's the method:
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);
}