练习一 : 二分查找

class Solution {
public int search(int[] nums, int target) {
int left = 0, right = nums.length - 1;
int mid = 0;
while (left <= right) {
mid = left + (right - left) / 2; // 防止溢出
if (nums[mid] == target) {
return mid;
} else if (nums[mid] > target) {
right = mid - 1;
} else { // nums[mid] < target
left = mid + 1;
}
}
return -1;
}
}
算法原理
- 数组必须有序
- 每次取中间位置,和目标值比较
- 比目标小 -> 去右边找
- 比目标大 -> 去左边找
- 直到找到或找不到







