二分查找

来源:互联网 发布:windows 98笔记本 编辑:程序博客网 时间:2024/06/12 01:11

int BSearchRecursion(int data[], int x, int low, int high)
{
 if (low > high)
 {
  return -1;
 }

 int mid = (low+high)/2;
 if (x == data[mid])
 {
  return mid;
 }

 if (x < data[mid])
 {
  return BSearch(data, x, low, mid-1);
 }
 
 if (x > data[mid])
 {
  return BSearch(data, x, mid+1, high);
 }
}

 

int BSearchNotRecursion(int data[], int x, int len)
{
 int low = 0;
 int high = len;
 int mid = 0;

 while(low <= high)
 {
  mid = (low+high)/2;
  if (x == data[mid])
  {
   return mid;
  }
  else if (x < data[mid])
  {
   high = mid + 1;
  }
  else
  {
   low = mid - 1;
  }
 }

 return -1;
}

原创粉丝点击