Sunday, January 25, 2009

バイナリーサーチ


   1  #!/usr/local/bin/ruby

   2  # encoding: utf-8

   3  list = (1..10).to_a

   4  

   5  def bi_search(n, list)

   6    low = 0

   7    high = list.length-1

   8    while low <= high

   9      mid = low + (high - low)/2

  10      mid_value = list[mid]

  11      if n > mid_value

  12        low = mid + 1

  13      elsif n < mid_value

  14        high = mid - 1

  15      else

  16        return mid

  17      end

  18    end

  19  end

  20  

  21  list.each { |i| print "#{i}: #{bi_search(i, list)}, "}

No comments: