用Python写出一个序列进行斐波那契二分检索并有运行结果,即使用斐波那契数列二分有序序列,查找某给定元素,找到返回下标,找不到返回-1
时间: 2024-02-28 08:52:10 浏览: 71
好的,下面是代码实现:
```python
def fib(n):
if n <= 0:
return 0
if n == 1:
return 1
return fib(n-1) + fib(n-2)
def fibonacci_search(arr, x):
n = len(arr)
k = 0
while fib(k) < n:
k += 1
offset = -1
while fib(k) > 1:
i = min(offset+fib(k-2), n-1)
if arr[i] < x:
k -= 1
offset = i
elif arr[i] > x:
k -= 2
else:
return i
if fib(k-1) and arr[offset+1] == x:
return offset + 1
return -1
arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]
x = 5
result = fibonacci_search(arr, x)
if result == -1:
print("元素不在序列中")
else:
print(f"元素在序列中的下标为 {result}")
```
运行结果为:
```
元素在序列中的下标为 4
```
注:上述代码实现的是斐波那契数列二分查找的一种,不是唯一的一种。
阅读全文