用java写一个二分查找
时间: 2023-09-07 19:04:34 浏览: 87
### 回答1:
好的,我可以回答这个问题。以下是一个用 Java 实现的二分查找算法:
```java
public static int binarySearch(int[] arr, int target) {
int left = 0;
int right = arr.length - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (arr[mid] == target) {
return mid;
} else if (arr[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}
```
这个算法接收一个已排序的整数数组 `arr` 和一个目标整数 `target`,返回目标整数在数组中的下标,如果目标整数不在数组中,则返回 -1。该算法使用了二分查找的思想,在每一轮循环中通过比较目标整数和数组中间位置的数,缩小查找范围,最终找到目标整数或者确定目标整数不在数组中。
### 回答2:
二分查找(Binary Search)是一种在有序数组中查找特定元素的算法。它通过将数组分成两部分,并比较所需的元素与数组中间元素的值来确定该元素是否存在于数组中。
以下是使用Java编写的一个简单的二分查找例子:
```java
public class BinarySearch {
public static int binarySearch(int[] arr, int key) {
int left = 0;
int right = arr.length - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
if (arr[mid] == key) {
return mid;
}
if (arr[mid] < key) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}
public static void main(String[] args) {
int[] arr = {2, 4, 6, 8, 10, 12, 14, 16, 18, 20};
int key = 12;
int result = binarySearch(arr, key);
if (result == -1) {
System.out.println("元素不在数组中");
} else {
System.out.println("元素在数组中的索引位置为: " + result);
}
}
}
```
上述代码中,`binarySearch`方法接收一个有序整数数组`arr`和要查找的关键字`key`作为参数,返回关键字在数组中的索引,如果不存在,则返回-1。
使用循环和逐步缩小搜索范围的策略,该算法在每一次迭代中将数组分成两部分,并通过比较关键字和数组中间元素的值来决定进一步搜索的方向。如果中间元素等于关键字,则返回该元素的索引;如果中间元素小于关键字,则在右半部分继续搜索;如果中间元素大于关键字,则在左半部分继续搜索。最终,如果未找到关键字,则返回-1。
在上述示例代码中,我们搜索有序数组`arr`中的关键字12,并输出结果为“元素在数组中的索引位置为: 5”。这意味着关键字12在数组中的索引为5。
### 回答3:
二分查找是一种在有序数组中查找目标值的算法。下面是使用Java语言编写一个简单的二分查找算法的示例代码:
```java
public class BinarySearch {
public static int binarySearch(int[] arr, int target) {
int left = 0; // 左边界
int right = arr.length - 1; // 右边界
while (left <= right) {
int mid = left + (right - left) / 2; // 计算中间索引
if (arr[mid] == target) {
return mid; // 如果中间元素等于目标值,则返回该索引
}
if (arr[mid] < target) {
left = mid + 1; // 如果中间元素小于目标值,则将左边界移动到中间索引后一位
} else {
right = mid - 1; // 如果中间元素大于目标值,则将右边界移动到中间索引前一位
}
}
return -1; // 如果未找到目标值,则返回-1
}
public static void main(String[] args) {
int[] arr = {2, 4, 6, 8, 10, 12};
int target = 8;
int result = binarySearch(arr, target);
if (result == -1) {
System.out.println("目标值未找到");
} else {
System.out.println("目标值在索引 " + result + " 处找到");
}
}
}
```
以上代码演示了如何使用二分查找在有序数组中查找目标值。在main()方法中,定义了一个有序数组arr和目标值target。然后调用binarySearch()方法执行二分查找,找到目标值的索引并返回。最后根据返回值输出结果。如果返回-1表示目标值未找到,否则输出目标值在数组中的索引位置。
阅读全文