我剛剛學會了如何進行插值搜索,但是在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