Algorithm 为什么在循环条件(l+;1!=u)时进行二进制搜索? a=(1..10)。到 def搜索(x,t) l=-1 u=x.5米长 而l+1!=U m=(l+u)/2.5轮 如果x[m]{x[p]}” 如果p>=x.length | | x[p]!=T p=-1 结束 结束 搜索(a,5)
我做了很长时间的研究,但找不到原因Algorithm 为什么在循环条件(l+;1!=u)时进行二进制搜索? a=(1..10)。到 def搜索(x,t) l=-1 u=x.5米长 而l+1!=U m=(l+u)/2.5轮 如果x[m]{x[p]}” 如果p>=x.length | | x[p]!=T p=-1 结束 结束 搜索(a,5),algorithm,Algorithm,我做了很长时间的研究,但找不到原因 l=-1 为什么要将l赋给-1 而循环条件为什么是l+1!=u大于l
l+1!=u
大于l
你能帮我吗 l和u是二进制搜索的上下限
这里您将l分配给-1,u分配给x.length。您可以轻松地将l的赋值从-1更改为0,并更改条件l+1!=u到ll和u是二进制搜索的上下限
这里您将l分配给-1,u分配给x.length。您可以轻松地将l的赋值从-1更改为0,并更改条件l+1!=是的,是的,条件很可能是
l
,但我在找一本书,里面有l+1!=这是不变性`lx[l]l
,但我正在找一本书,里面有l+1!=这是不变性`lx[l]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)