Categories
Algorithm Algorithms & Design Search

Fibonacci Search


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

Leave a comment

Design a site like this with WordPress.com
Get started