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;
}