summaryrefslogtreecommitdiff
path: root/assignments/a1.rb
blob: d09208d0e360e1f3b7461d91352d9fa3ecaa0090 (plain)
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