| | | | | |

Binary Search Code

unsigned int lower_bound (T* v, unsigned int size, T t)
{
  unsigned int   low  = 0;
  unsigned int   mid;
  unsigned int   hih = size;
  while (low < hih)
  {
    mid =  (low + hih) / 2;  
    if (v[mid] < t)          
      low = mid + 1;         
    else                     
      hih = mid;             
  }  
  return low;
}
unsigned int upper_bound (T* v, unsigned int size, T t)
{
  unsigned long   low = 0;
  unsigned long   mid;
  unsigned long   hih = size;
  while (low < hih)
  {
    mid =  (low + hih) / 2;
    if (t < v[mid])
      hih = mid;                
    else                        
      low = mid + 1;            
  }  
  return low;
}
bool binary_search (T* v, unsigned int size, T t)
{
  unsigned int lb = lower_bound(v,size,t);
  if (lb < size)
  {
    if (t == v[lb])
    {
      return true;
    }
  }
  return false;
}

| | Top of Page | 3. Introduction to Algorithm Analysis - 8 of 23