Set left = 0, right = arr.length - 1
While left <= right: compute mid = (left + right) / 2
If arr[mid] == target, return mid
If arr[mid] < target, set left = mid + 1
If arr[mid] > target, set right = mid - 1
If loop exits, return -1
##### ###### ##### ### # # ### # # ###### ## ## ## ## ## ## ## # # # # # ## ##### #### ##### # # # # # # # #### ## # ## ## ## ## # # # # # ## ## # ###### ## ### # ### # ######
##### ###### ##### ### # # ### # # ###### ## ## ## ## ## ## ## # # # # # ## ##### #### ##### # # # # # # # #### ## # ## ## ## ## # # # # # ## ## # ###### ## ### # ### # ######
(Shrinking window)
Set left = 0, right = arr.length - 1
While left <= right: compute mid = (left + right) / 2
If arr[mid] == target, return mid
If arr[mid] < target, set left = mid + 1
If arr[mid] > target, set right = mid - 1
If loop exits, return -1