C#版本(最基础版二分查找),时间复杂度为O(logn),找不到返回-1
这种查找只会有两种情况:
1.元素刚好出现在二分法的中心(此时返回的是mid)
2.循环到只剩最后两个元素,在进行最后一次二分法(此时返回的是low)。
由此可得,这种写法的二分法被找到元素的位置一定出现在low或mid位置。
另:使用(height-low)/2+low代替(height+low)/2是防止数组越界
public int search(int[] nums, int target) {
int low = 0, high = nums.length - 1;
while (low <= high) {
int mid = (high - low) / 2 + low;
int num = nums[mid];
if (num == target) {
return mid;
} else if (num > target) {
high = mid - 1;
} else {
low = mid + 1;
}
}
return -1;
}