二分搜索

很多企业很喜欢在笔试题或者面试的时候问二分搜索,在看了编程之美后,回顾,写下了这个让很多人不以为是,但却经常出错的code

 

int binarySearch(int *a, int len, int val)
{
  int beg, mid, end;
  beg = 0;
  end = len - 1;
  while (beg < end - 1)
  {
    mid = beg + (end - beg) / 2;
    if(a[mid] <= val) beg = mid;
    else end = mid;
  }
  if(a[end] == val) return end;
  else if(a[beg] == val) return beg;
  return -1;
}

posted @ 2011-12-13 17:07  Anbit自由之路  阅读(137)  评论(0编辑  收藏  举报