Search_Insert_Position

Same as linear binary search for first couple iterations.

Three possible terminating conditions:
1. start and end pointer crossed somewhere in the middle.

2. start pointer goes out of bound from the array, but since it would
not enter while loop it wouldn't cause exception.

3. end pointer moves to the left out of bound from array, same as #2, it
would not cause exception.

But since we are also required to deliver the appropriate position to
insert; We know when we break out of this while loop, the target value
is not in array. Otherwise we would have returned in the while loop.

Therefore for case #1, return start pointer since it points to the
number bigger than target, and its position should be replaced;

For case #2 and #3, we return position A.length and -1, respectively,
indicating the correct position to be inserted, which is pointing to the
place right outside of the array's boundary.