kopia lustrzana https://github.com/animator/learn-python
Create Fibonacci Search.py
rodzic
83dbbacd6f
commit
38d6251b2b
|
@ -0,0 +1,49 @@
|
|||
from bisect import bisect_left
|
||||
|
||||
def fibMonaccianSearch(arr, x, n):
|
||||
|
||||
fibMMm2 = 0
|
||||
fibMMm1 = 1
|
||||
fibM = fibMMm2 + fibMMm1
|
||||
|
||||
while (fibM < n):
|
||||
fibMMm2 = fibMMm1
|
||||
fibMMm1 = fibM
|
||||
fibM = fibMMm2 + fibMMm1
|
||||
|
||||
offset = -1
|
||||
|
||||
while (fibM > 1):
|
||||
|
||||
i = min(offset+fibMMm2, n-1)
|
||||
|
||||
|
||||
if (arr[i] < x):
|
||||
fibM = fibMMm1
|
||||
fibMMm1 = fibMMm2
|
||||
fibMMm2 = fibM - fibMMm1
|
||||
offset = i
|
||||
|
||||
|
||||
elif (arr[i] > x):
|
||||
fibM = fibMMm2
|
||||
fibMMm1 = fibMMm1 - fibMMm2
|
||||
fibMMm2 = fibM - fibMMm1
|
||||
|
||||
else:
|
||||
return i
|
||||
|
||||
if(fibMMm1 and arr[n-1] == x):
|
||||
return n-1
|
||||
|
||||
return -1
|
||||
|
||||
|
||||
arr = list(map(int,input("Enter the array elements: ").split()))
|
||||
n = len(arr)
|
||||
x = int(input("enter the number to search: "))
|
||||
ind = fibMonaccianSearch(arr, x, n)
|
||||
if ind>=0:
|
||||
print("Found at index:",ind)
|
||||
else:
|
||||
print(x,"isn't present in the array");
|
Ładowanie…
Reference in New Issue