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