arr
i
初始值 0
mid
因为 arr[mid] === target所以 left = mid + 1
第3次循环
2
21
23
45
59
66
76
0
1
3
4
5
6
7
8
9
10
right
target
因为 arr[left-1] === target所以 return left-1
left
因为 arr[mid] > target所以 right = mid
因为 arr[mid] === target所以 left = mid + 1
第1次循环
left/mid
指针
初始值arr.length
left/right
第2次循环
(right + left) >> 1