From db1e17ef0bd846e67c948943080a3518394349d1 Mon Sep 17 00:00:00 2001 From: Mehul Ingale Date: Tue, 15 Oct 2019 23:36:21 +0530 Subject: [PATCH] Added Fibonacii Search in python --- Algorithms/Search/Python/fibinacci_search.py | 36 ++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 Algorithms/Search/Python/fibinacci_search.py diff --git a/Algorithms/Search/Python/fibinacci_search.py b/Algorithms/Search/Python/fibinacci_search.py new file mode 100644 index 00000000..b2ab6510 --- /dev/null +++ b/Algorithms/Search/Python/fibinacci_search.py @@ -0,0 +1,36 @@ +def FibonacciSearch(arr, key): + fib2 = 0 + fib1 = 1 + fib = fib1 + fib2 + while (fib < len(arr)): + fib2 = fib1 + fib1 = fib + fib = fib1 + fib2 + index = -1 + while (fib > 1): + i = min(index + fib2, (len(arr)-1)) + if (arr[i] < key): + fib = fib1 + fib1 = fib2 + fib2 = fib - fib1 + index = i + elif (arr[i] > key): + fib = fib2 + fib1 = fib1 - fib2 + fib2 = fib - fib1 + else : + return i + if(fib1 and index < (len(arr)-1) and arr[index+1] == key): + return index+1 + return -1 + + +key= 15 +arr = [5, 10, 15, 20, 25, 30, 35] +ans = FibonacciSearch(arr, key) +print(ans) +if (ans): + print("Found at "+ str(ans+1) +" position") +else: + print("Not Found") +