What is the algorithm that starts at the middle of a sorted array or arraylist and eliminates half of the array or arraylist in each iteration until the desired value is found or all elements have been eliminated?