a = (1..10).to_a
def search(x, t)
l = -1
u = x.length
while l+1 != u
m = (l + u) / 2.round
if x[m] < t
l = m
else
u = m
end
puts "l:\t#{l} u:\t #{u} m:\t#{m}"
end
p = u
puts "p: #{p} -> #{x[p]}"
if p >= x.length || x[p] != t
p = -1
end
end
search(a, 5)
我长时间研究,但找不到原因,
l = -1
为什么将l分配给-1
while循环条件为什么l+1 != u
比l < u
我试图理解这种方法,最后不能吃它
可以帮到我吗?
答案 0 :(得分:2)
l 和 u 是二进制搜索的下限和下限。
在这里,您将 l 分配给-1,将 u 分配给x.length。您可以轻松地将 l 的分配从-1更改为0,并将条件 l + 1!= u 更改为 l&lt; û强>