Для оптимизации поиска наименьшего элемента в последовательности Фибоначчи можно использовать алгоритм поиска Фибоначчи. www.delftstack.com iq.opengenus.org
Алгоритм: www.delftstack.com
- Найти наименьшее число Фибоначчи, которое больше или равно размеру массива. www.delftstack.com iq.opengenus.org
- Сравнить искомый элемент с последним элементом, который покрывает число Фибоначчи. www.delftstack.com iq.opengenus.org
- Если искомый элемент равен этому элементу, вернуть индекс. www.delftstack.com iq.opengenus.org
- Если искомый элемент меньше этого элемента, отбросить половину после этого элемента и переместить последовательность Фибоначчи на два шага назад. www.delftstack.com Также обновить смещение, чтобы изменить начальный индекс пространства поиска. www.delftstack.com
- Если искомый элемент больше этого элемента, отбросить половину перед этим элементом и переместить последовательность Фибоначчи на один шаг назад. www.delftstack.com
- Если число Фибоначчи (m-1) равно 1, остался один непроверенный элемент, сравнить его с искомым элементом. www.delftstack.com Если они равны, вернуть индекс. www.delftstack.com
В среднем на каждой итерации пространство поиска сокращается на треть или две трети, поэтому алгоритм имеет логарифмическую сложность. www.delftstack.com В лучшем случае сложность времени выполнения — O(1), это происходит, когда искомый элемент — первый элемент для сравнения. www.delftstack.com