I am trying to implement binary search using recursion but i am not getting the correct results as expected. Here's the code:
import java.util.*;
class BinarySearchRecursion{
static private int searchNum(int[] array, int item){
if(array.length >=2){
int remainder = array.length%2;
int splitSize = array.length/2;
if(remainder==0){
if(item> array[splitSize-1]){
int num = searchNum(Arrays.copyOfRange(array,splitSize,array.length), item);
return num;
}else{
int num = searchNum(Arrays.copyOfRange(array,0,splitSize), item);
return num;
}
}else{
if(array[splitSize]== item)
return splitSize;
if(item> array[splitSize-1]){
int num = searchNum(Arrays.copyOfRange(array,splitSize,array.length), item);
return num;
}else{
int num = searchNum(Arrays.copyOfRange(array,0,splitSize), item);
return num;
}
}
//System.out.println(splitSize);
}else{
if(array[0] == item){
System.out.println("Item exist");
return item;
}
else
return -1;
}
//return -1;
}
public static void main(String... args){
int[] arr = {1,2,3,4,5,6,7,8,9,10};
int index = searchNum(arr, 89);
if(index != -1){
System.out.println("Number exist: "+ Integer.valueOf(index));
}
else
System.out.println("Number does not exist in the given list.");
}
}
I am not getting the correct items, like if i search for 8 it give me value 2,etc. What i am doing wrong here?