1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
#!/usr/bin/env ruby
def bsearch(target, items)
min = 0
max = items.size
mid = (max - min) / 2
while (mid > min && mid < max) do
current = items[mid]
if target == current
return true
elsif target > current
min = mid
else
max = mid
end
mid = ((max - min) / 2) + min
end
return false
end
items = [3, 6, 7, 9, 12, 14, 18, 21, 22, 31, 43]
puts items.inspect
puts [1, bsearch(1, items)].inspect
puts [35, bsearch(35, items)].inspect
puts [22, bsearch(22, items)].inspect
puts [44, bsearch(44, items)].inspect
|