Position BinarySearch( List L, ElementType X )
{
Position low = 1, high = L->Last;
Position mid;
while (low <= high) { //low <= high not low < high
mid = (low + high) / 2;
if (L->Data[mid] == X) {
return mid;
} else if (L->Data[mid] < X) {
low = mid + 1;
} else {
high = mid - 1;
}
}
return NotFound;
}