java分治法折半查找
时间: 2023-07-18 11:14:41 浏览: 100
折半查找,也称二分查找,是一种非常常用的查找算法。它的基本思想是:将有序数组分成两部分,取数组中间值与要查找的值进行比较,如果相同则返回中间值下标,如果中间值比要查找的值大,则在左半部分继续查找,否则在右半部分继续查找,直到找到要查找的值或者无法查找到为止。
下面是一个用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;
}
```
在这个示例代码中,我们定义了一个binarySearch方法,它接收一个有序数组和要查找的目标值作为参数。方法中,我们先初始化左右指针left和right分别指向数组的起始和末尾位置。然后,我们用一个while循环来不断缩小查找范围,直到找到目标值或者无法查找到为止。在每次循环中,我们先计算出中间位置mid,然后将目标值与数组中间值进行比较,如果相同则返回中间值下标,如果中间值比目标值小,则在右半部分继续查找,否则在左半部分继续查找。最后,如果无法查找到目标值,则返回-1。
使用折半查找算法的时间复杂度为O(log n),是一种非常高效的查找算法。
阅读全文