是不是可以利用二分查找查询不连续区域的数字

是否可以利用二分查找查询不连续区域的数字
区域集不是连续的数字,而是有一段间隔的数字集合,如
int a[] = {0-50,80-111,150-200...},类似这样的集合,然后对这种情况是否可以使用二分查找来查找某个数字
我自己写的程序
[code = C/C++]
bool binaryFind(int id,int left,int right)
{
  int mid = (left+right)/2;
  int num = gArray[mid];
  if(id == num)
  return true;
  if(num < id)
  binaryFind(id,left,mid+1);
  else
  binaryFind(idm,mid-1,right);
}
int main()
{
  gArray[]=.....;
  int len = sizeof(gArray)/sizeof(int);
  if(binaryFind(123,0,len-1);
  printf("find 123\n");
  else
  printf("not found\n");
 return 0;
}
不知道上面这段程序的思路是否可行?
然后我自己运行了之后,发现若是输入的id不是该区域集内的数字,则会无法跳出递归,要是这个id是这个集合内的,那倒是可以辨别出来返回true,请高手看看这段代码行不行?
上面若是有什么错误的地方,请见谅,纯手打,有一定手误的地方。
若是这个方法不行,那么还有什么方法也顺便提点一下,谢谢
[/code]

------解决方案--------------------
当然可以, 没区别.
------解决方案--------------------
C/C++ code

int mid = (left+right)/2;
//加一句if(left>high) return false应该可以跳出来吧
……
if(num < id)
  binaryFind(id,left,mid+1);//改为binaryFind(id,mid+1,right);
  else
  binaryFind(idm,mid-1,right);//改为binaryFind(id,left,mid-1);

------解决方案--------------------
当然可以了。