public class FibonacciSearch {
public static void main(String[] args) {
int arr[]={10,22,33,34,36,37,39,41,44,48,51,57};
int n = arr.length;
int x = 44;
System.out.println("Element to Search ::"+x);
int index = fibonacci(arr,x,n);
System.out.println("Element found at location ::"+index);
}
public static int fibonacci(int arr[],int x, int n){
//find smallest fibonacci number greater than or equal to n;
int fibM2 = 0;
int fibM1 = 1;
int fibM = fibM1+fibM2;
while(fibM1){
int i = Math.min(offset+fibM2, n-1);
if(arr[i]x){
fibM = fibM2;
fibM1 = fibM1 - fibM2;
fibM2 = fibM - fibM1;
}
else
return i;
}
if (fibM1 == 1 && arr[n-1] == x)
return n-1;
return -1;
}
}
Output
Element to Search ::44 Element found at location ::8