**Problem : **
Why would happen if binary search were called on an unsorted array?

**Problem : **
Does the middle pointer necessarily have to be given the value
`(first + last) / 2`, or could it be any value in between first and last?

**Problem : **
theSpark.com stores their user database in a big array, sorted
alphabetically by user name. The array contains 2.5 million elements.
How many comparisons, at most, will it take their binary search algorithm
to locate the data it is searching for?

**Problem : **
If you were to be doing many searches on a sorted linked list of
*n*
elements, how might you transform the list to increase the efficiency
in the long run?

**Problem : **
Someone gives you an array of integers sorted in descending order. Rewrite
the binary search code to account for this.

int binary_search(int arr[], int find, int first, int last) { int middle, found; found = 0; while((first <= last) && !found) { middle = (first + last) / 2; if (arr[middle] == find) found = 1; else if (arr[middle] < find) last = middle - 1; else first = middle + 1; } if (found) return middle; else return -1; }