int mid = (left + right) / 2; //若left和right过大,则会存在两数相加超出数据限制的情况
int mid = left + (right - left) / 2; //改成这种写法,则会避免两个大数直接相加
/*当right = size - 1时
* 这里控制循环变为left<=right,因为right所代表的位置参与之中的计算。
* 向左边查找必须right=mid-1, 因为mid-1的位置可以访问到,mid的位置的元素已经比较过了。
* 使用left=mid+1,这里不使用left=mid是因为我们都已经将mid进行比较过了,不需要再参与运算了。
*/
/*当right = size时
* 这里控制循环的left<right可以取等号吗,答案是不可以,因为当相等的时候,找的要是数组的最后一个数组,就会发生数组越界异常。
* 向左边查找必须right=mid, 如果right=mid-1就会出现存在的元素可能会找不到,在赋值的时候自己可以试一试。
* 使用left=mid+1,这里不使用left=mid是因为我们都已经将mid进行比较过了,不需要再参与运算了。
*/
- 二分查找
int BinarySearch(int arr[], int size, int target) {
int left = 0;
int right = size - 1;
while (left <= right) {
int mid = (left + right)