From 7fbd71df1f1ca8f798c58996cdfb313ef4d8d005 Mon Sep 17 00:00:00 2001 From: Administrator Date: Fri, 22 Oct 2021 13:02:39 +0200 Subject: [PATCH] add fibonacci search --- searches/fibonacci_search.rb | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 searches/fibonacci_search.rb diff --git a/searches/fibonacci_search.rb b/searches/fibonacci_search.rb new file mode 100644 index 0000000..0a845bd --- /dev/null +++ b/searches/fibonacci_search.rb @@ -0,0 +1,34 @@ +def fibonacci_search int arr, int element + n = n.size + f2 = 0 + f1 = 1 + f = f2 + f1 + offset = -1 + + while f < n do + f2 = f1; + f1 = f; + f = f2 + f1; + end + + while f > 1 do + i = [offset+f2, n-1].min + + if arr[i] < element + f = f1 + f1 = f2 + f2 = f - f1 + offset = i + elsif arr[i] > element + f = f2 + f1 = f1 - f2 + f2 = f - f1 + else + return i + end + end + + return offset + 1 if f1 && arr[offset + 1] == element + + -1 +end