binary search
A search algorithm which repeatedly divides an ordered search space in half according to how the required (key) value compares with the middle element.
The following pseudo-C routine performs a binary search return the index of the element of vector "thing[first..last]" equal to "target":
if (target < thing[first] || target > thing[last])
return NOT_FOUND;
while (first < last)
{
mid = (first+last)/2; /* truncate to integer */
if (target == thing[mid])
return mid;
if (target < thing[mid])
last = mid-1;
else
first = mid+1;
}
if (target == thing[last])
return last;
return NOT_FOUND;
