请用Java代码编写二分查找
时间: 2023-03-14 09:08:40 浏览: 58
好的,以下是Java代码实现二分查找的示例:
```java
public static int binarySearch(int[] array, int target) {
int left = 0;
int right = array.length - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (array[mid] == target) {
return mid;
} else if (array[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1; // 表示目标元素不存在
}
```
这里使用了一个 while 循环来实现二分查找,其中使用了左右指针来缩小搜索范围。在每次循环中,首先计算中间元素的下标(通过 left 和 right 求平均数),然后将其与目标元素进行比较。如果中间元素等于目标元素,则直接返回其下标;否则,如果中间元素小于目标元素,则将左指针移到中间元素的右边,否则将右指针移到中间元素的左边。重复上述步骤,直到找到目标元素或者确定目标元素不存在。
相关问题
java编写二分查找代码
面是Java编写的二分查找代码:
```java
public class BinarySearch {
//方法1:递归求解
public int recursionSearch(int[] A, int start, int end, int number) {
if (start > end) {
return -1;
}
int mid = (start + end) / 2;
if (A[mid] == number) {
return mid;
} else if (A[mid] > number) {
return recursionSearch(A, start, mid - 1, number);
} else {
return recursionSearch(A, mid + 1, end, number);
}
}
//方法2:迭代求解
public int iterationSearch(int[] A, int number) {
int start = 0;
int end = A.length - 1;
while (start <= end) {
int mid = (start + end) / 2;
if (A[mid] == number) {
return mid;
}
if (A[mid] > number) {
end = mid - 1;
}
if (A[mid] < number) {
start = mid + 1;
}
}
return -1;
}
public static void main(String[] args) {
BinarySearch test = new BinarySearch();
int[] A = {3, 14, 27, 31, 39, 42, 55, 70, 74, 81, 85, 93, 98};
System.out.println("使用递归法求解number = 70的数组下标结果:" + test.recursionSearch(A, 0, A.length - 1, 70));
System.out.println("使用迭代法求解number = 70的数组下标结果:" + test.iterationSearch(A, 70));
}
}
```
java编写二分查找算法
好的,下面是用 Java 编写的二分查找算法的示例代码:
```
public class BinarySearch {
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;
} else if (array[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}
}
```
在这个算法中,我们首先定义了两个指针 `left` 和 `right`,分别指向数组的第一个元素和最后一个元素。然后我们在数组中间取一个元素,并与目标元素进行比较。如果目标元素比中间元素大,则说明目标元素在中间元素的右边,我们就把指针 `left` 移动到中间元素的右边一位,反之则把指针 `right` 移动到中间元素的左边一位。这样,每次我们就能缩小查找的范围,直到找到目标元素或者确定目标元素不存在为止。
希望这个示例代码能帮到你!