DSAverse
Initializing Sorting Algorithms...
Sorting Algorithm
Binary Tree
Graph Traversal
Preparing interactive visualizations for optimal learning experience...
Initializing Sorting Algorithms...
Preparing interactive visualizations for optimal learning experience...
Initializing Sorting Algorithms...
Preparing interactive visualizations for optimal learning experience...
Watch how Fibonacci Search uses Fibonacci numbers to divide the array and efficiently locate the target element.
Click Start to begin Fibonacci Search visualization
The algorithm uses Fibonacci numbers to divide the array:
Each division follows the golden ratio (φ ≈ 1.618), providing optimal search performance.
def fibonacci_search(arr, target):
n = len(arr)
# Initialize Fibonacci numbers
fib_m2 = 0 # (m-2)'th Fibonacci number
fib_m1 = 1 # (m-1)'th Fibonacci number
fib_m = fib_m2 + fib_m1 # m'th Fibonacci number
# Find smallest Fibonacci number >= n
while fib_m < n:
fib_m2 = fib_m1
fib_m1 = fib_m
fib_m = fib_m2 + fib_m1
offset = -1
while fib_m > 1:
# Calculate index to check
i = min(offset + fib_m2, n - 1)
if arr[i] < target:
fib_m = fib_m1
fib_m1 = fib_m2
fib_m2 = fib_m - fib_m1
offset = i
elif arr[i] > target:
fib_m = fib_m2
fib_m1 = fib_m1 - fib_m2
fib_m2 = fib_m - fib_m1
else:
return i
# Check last element
if fib_m1 and offset + 1 < n and arr[offset + 1] == target:
return offset + 1
return -1