Update fibonacci_search.rb

This commit is contained in:
Philip Schikora 2021-11-02 12:41:47 +01:00 committed by GitHub
parent 7fbd71df1f
commit 4b34faccca
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -1,34 +1,34 @@
def fibonacci_search int arr, int element def fibonacci_search int arr, int element
n = n.size n = n.size
f2 = 0 f2 = 0
f1 = 1 f1 = 1
f = f2 + f1 f = f2 + f1
offset = -1 offset = -1
while f < n do while f < n do
f2 = f1; f2 = f1;
f1 = f; f1 = f;
f = f2 + f1; f = f2 + f1;
end end
while f > 1 do while f > 1 do
i = [offset+f2, n-1].min i = [offset+f2, n-1].min
if arr[i] < element if arr[i] < element
f = f1 f = f1
f1 = f2 f1 = f2
f2 = f - f1 f2 = f - f1
offset = i offset = i
elsif arr[i] > element elsif arr[i] > element
f = f2 f = f2
f1 = f1 - f2 f1 = f1 - f2
f2 = f - f1 f2 = f - f1
else else
return i return i
end end
end end
return offset + 1 if f1 && arr[offset + 1] == element return offset + 1 if f1 && arr[offset + 1] == element
-1 -1
end end