Я только что научился делать интерполяционный поиск, но у меня проблемы с его реализацией на Ruby. Я продолжаю иметь бесконечные петли, либо нижняя граница, либо верхняя граница близка к искомому числу, но нижняя граница не касается верхней границы условия выхода метода.Выполнение поиска интерполяции на бесконечной петле Ruby
def exist?(id)
\t lower = 0
\t upper = $employee_list.length - 1
\t while lower <= upper
\t \t rise = upper - lower
\t \t run = $employee_list[upper] - $employee_list[lower]
\t \t x = id - $employee_list[lower]
\t \t middle = (rise.to_f/run.to_f * x.to_f + lower.to_f).floor
\t \t if id == $employee_list[middle]
\t \t \t return true
\t \t elsif id < $employee_list[middle]
\t \t \t upper = middle - 1
\t \t else
\t \t \t lower = middle + 1
\t \t end
\t end
end
Является ли '$ employee_list' отсортированным? –
Да, это так! И ваш код работает! – Benjamin