我的任務是使用Ruby製作更高效的二進制搜索代碼。我跟着從這個鏈接的邏輯: http://www.cprogramming.com/discussionarticles/sorting_and_searching.html
我的代碼如下:
def bsearch(a, k)
lower = 0
upper = a.length-1
while a[upper].to_f> k.to_f and a[lower].to_f< k.to_f
low_diff = k.to_f -a[lower].to_f
range_diff = a[upper].to_f-a[lower].to_f
count_diff = upper-lower
range = low_diff/range_diff * count_diff + lower
if k==a[lower]
return lower
if k.to_f > a[range].to_f
lower = range+1
else if k.to_f < a[range].to_f
upper =range
else
lower = range
end
end
end
我仔細檢查,但我不知道爲什麼我一直在經歷的跟隨着錯誤:
unexpected $end , expecting kEND
嗨俞灝,我的成績產量nill要返回數組中的位置,請幫助 – user2445971
@ user2445971這是一個不同的問題,因爲我只在發佈答案時檢查了編譯錯誤。最好問一個關於它的新問題。 –