【算法】二分查找
题目:请实现无重复数字的升序数组的二分查找。
难度:简单
代码:
二分查找,又叫折半查找,要求待查找的序列有序。 每次取中间位置的值与待查关键字比较,如果中间值比待查关键字大,则在前半部分循环这个查找的过程,如果中间值比待查关键字小,则在后半部分循环这个查找的过程。直到查找到了为止,否则序列中没有待查的关键字。
public class Solution {
public int search(int[] nums, int target) {
int high = nums.length - 1;
int low = 0;
int mid = 0;
if (target < nums[low] || target > nums[high] || low > high) {
return -1;
}
while (low <= high) {
mid = (low + high) / 2;
// 比mid大则在左边,比mid小则在右边
if (nums[mid] > target) {
high = mid - 1;
} else if (nums[mid] < target) {
low = mid + 1;
} else {
return mid;
}
}
return -1;
}
}