java二分法查找shuzi
时间: 2024-05-11 15:12:37 浏览: 98
Java二分查找是一种非常高效的查找算法,适用于有序数组。二分查找的基本思路是将查找区间不断地缩小,直到找到目标元素为止。具体实现方式是通过比较目标元素与中间元素的大小关系,缩小查找区间,不断重复该过程,直到查找到目标元素或者区间为空。
以下是Java二分查找的基本代码实现:
```
public static int binarySearch(int[] nums, int target) {
int left = 0, 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;
}
}
return -1;
}
```
其中,nums表示有序数组,target表示要查找的目标元素。该函数返回目标元素在数组中的索引位置,如果不存在则返回-1。
相关问题
{23,1,4,56,37,56,88,13,89,65,44}使用二分法查找确认55是否在数组中 用Java编写程序
要使用二分查找法确认数字55是否在数组{23,1,4,56,37,56,88,13,89,65,44}中,首先需要对数组进行排序,因为二分查找法要求数组是有序的。然后,通过比较数组中间元素的值与目标值55,来判断是在数组的左半部分还是右半部分继续查找,直到找到目标值或确定数组中不存在该值。
以下是使用Java编写的二分查找程序,以及二分查找法的实现逻辑:
```java
public class BinarySearch {
public static void main(String[] args) {
int[] array = {23, 1, 4, 56, 37, 56, 88, 13, 89, 65, 44};
int target = 55;
// 先对数组进行排序
java.util.Arrays.sort(array);
int result = binarySearch(array, target);
if (result == -1) {
System.out.println("数组中不存在数字" + target);
} else {
System.out.println("数字" + target + "在数组中的位置为:" + result);
}
}
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; // 未找到目标值,返回-1
}
}
```
阅读全文