MATLABを使用して2分探索をするプログラムを書いたのでソースコードと使用方法を載せます。指定した配列の中から、指定した数値にもっとも近い数値を格納している配列番号を返しますプログラムです。
ソースコード
function[ans] = binarySearch(src,key)
  left = 1;
  right = length(src);
  while 1
      center = int16((left + right)/2);
      if(left>=right)
          break;
      elseif(key>src(center))
          left = center+1;
      else
          right = center-1;
      end
  end
  if(left ~= right)
      if(abs(src(left)-key)>=abs(src(right)-key))
          ans=right;
      else
          ans=left;
      end
  else
      if(left<length(src) && left>1)
          if(abs(src(left)-key)>=abs(src(left+1)-key))
              ans=left+1;
          elseif(abs(src(left)-key)>=abs(src(left-1)-key))
              ans=left-1;
          else
              ans=left;
          end
      elseif(left==length(src))
          if(abs(src(left)-key)>=abs(src(left-1)-key))
              ans=left-1;
          else
              ans=left;
          end
      else
          if(abs(src(left)-key)>=abs(src(left+1)-key))
              ans=left+1;
          else
              ans=left;
          end
      end  
  end  
end
使用方法
binarySearch(探索する配列, 探索する数値);
使用例
>x=[1 8 13 25 31 38 47 55 64 71];
>v=53;
>binarySearch(x,v);
ans=
        8
>x(binarySearch(x,v));
ans=
        55








