Java利用二分法给定一个 数组nums = [-1,0,3,5,9,12] 和一个目标值 target = 9 ,写一个函数搜索 nums 中的 target ,如果目标值存在返回下标,否则返回 -1 。
时间: 2024-09-19 07:14:51 浏览: 40
在Java中,你可以使用二分查找算法(Binary Search)来解决这个问题。首先,我们需要保证输入数组`nums`是已排序的。然后按照以下步骤编写函数:
```java
public class Main {
public static int search(int[] nums, int target) {
if (nums == null || nums.length == 0) {
return -1;
}
int left = 0;
int right = nums.length - 1;
while (left <= right) {
int mid = left + (right - left) / 2; // 取中间索引
if (nums[mid] == target) { // 如果中间元素等于目标值
return mid; // 返回该位置的索引
} else if (nums[mid] < target) { // 如果中间元素小于目标值,调整左边界
left = mid + 1;
} else { // 如果中间元素大于目标值,调整右边界
right = mid - 1;
}
}
// 没有找到目标值,返回-1
return -1;
}
public static void main(String[] args) {
int[] nums = {-1, 0, 3, 5, 9, 12};
int target = 9;
System.out.println(search(nums, target)); // 输出:4
}
}
```
这个`search`函数会返回目标值在数组中的索引,如果没有找到则返回-1。注意,数组必须是升序排列,否则二分查找可能无法正确工作。在这个例子中,目标值9的下标是4。
阅读全文