二分查找——LeetCode704
int search(int* nums, int numsSize, int target){
int low = 0;
int high = numsSize-1;
int mid;
while(low<=high){ //注意此处小于等于(对应于数组中只有一个元素)
mid = (low+high) / 2; //在循环里,low<=high 才有意义
if(nums[mid] == target)
return mid;
else if (nums[mid] > target)
high = mid -1 ;
else
low = mid+1;
}
return -1;
}
在实际中,mid = (low+high) / 2
可以用mid = ((low^high)>>1)+(low & high)
或者mid = low + (high - low) / 2
来代替,防止low+high溢出