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