用java谢一个二分查找示例代码
时间: 2023-09-21 08:06:16 浏览: 92
### 回答1:
下面是一个使用Java实现的二分查找示例代码:
```java
public class BinarySearchExample {
public static int binarySearch(int[] arr, int key) {
int low = 0;
int high = arr.length - 1;
while (low <= high) {
int mid = (low + high) / 2;
if (arr[mid] == key) {
return mid;
} else if (arr[mid] > key) {
high = mid - 1;
} else {
low = mid + 1;
}
}
return -1;
}
public static void main(String[] args) {
int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int key = 5;
int index = binarySearch(arr, key);
if (index != -1) {
System.out.println("Element found at index " + index);
} else {
System.out.println("Element not found");
}
}
}
```
该程序将一个整数数组和要查找的关键字作为参数传递给`binarySearch`方法。如果关键字在数组中,则返回其索引;否则返回-1。在主方法中,我们使用示例数组和关键字调用方法,并打印结果。
### 回答2:
二分查找,也称为折半查找,是一种高效的查找算法。
下面是一个使用Java实现的二分查找示例代码:
```java
public class BinarySearchExample {
public static void main(String[] args) {
int[] arr = {2, 4, 6, 8, 10, 12, 14, 16, 18, 20};
int target = 12;
int result = binarySearch(arr, target);
if (result == -1) {
System.out.println("目标元素不存在");
} else {
System.out.println("目标元素在数组中的索引为: " + result);
}
}
public static int binarySearch(int[] arr, int target) {
int low = 0;
int high = arr.length - 1;
while (low <= high) {
int mid = (low + high) / 2;
if (arr[mid] == target) {
return mid;
} else if (arr[mid] < target) {
low = mid + 1;
} else {
high = mid - 1;
}
}
return -1;
}
}
```
在上述示例代码中,我们首先声明了一个静态方法`binarySearch`用于执行二分查找。该方法接收一个已排序的整型数组和目标元素作为参数,返回目标元素在数组中的索引,如果目标元素不存在则返回-1。
在`main`方法中,我们定义了一个测试数组`arr`和目标元素`target`,然后调用`binarySearch`方法进行查找。最后根据返回的结果打印出相应的信息。
在二分查找算法中,我们维护了一个`low`变量表示查找范围的起始位置,一个`high`变量表示查找范围的结束位置。在每次循环中,我们计算出中间位置`mid`,并将目标元素与`arr[mid]`进行比较。如果相等,则返回`mid`作为目标元素的索引。如果目标元素大于`arr[mid]`,则说明目标元素在`mid`的右侧,将`low`更新为`mid + 1`,缩小范围。如果目标元素小于`arr[mid]`,则说明目标元素在`mid`的左侧,将`high`更新为`mid - 1`,继续缩小范围。重复上述步骤,直到找到目标元素或查找范围为空。如果最终无法找到目标元素,则返回-1。
通过这个示例代码,我们可以学习和理解二分查找算法的实现原理。
### 回答3:
下面是一个使用Java编写的二分查找示例代码:
```java
public class BinarySearchExample {
public static int binarySearch(int[] array, int target) {
int left = 0;
int right = array.length - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
if (array[mid] == target) {
return mid;
}
if (array[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}
public static void main(String[] args) {
int[] array = {1, 3, 5, 7, 9, 11, 13, 15};
int target = 9;
int index = binarySearch(array, target);
if (index != -1) {
System.out.println("目标元素的索引位置为:" + index);
} else {
System.out.println("目标元素不在数组中。");
}
}
}
```
在此示例代码中,首先定义了一个名为`binarySearch`的静态方法,该方法接受一个已排序的int数组和一个目标值作为参数,然后使用二分查找算法在数组中查找目标值。该方法返回目标值的索引位置,如果未找到目标值,则返回-1。
在`main`方法中,创建了一个已排序的int数组`array`和一个目标值`target`,然后调用`binarySearch`方法查找目标值在数组中的索引位置,并将结果存储在`index`变量中。最后,使用条件语句对结果进行判断,如果`index`不等于-1,则输出目标元素的索引位置,否则输出目标元素不在数组中。
阅读全文