java递归算法实现二分查找
时间: 2023-10-14 18:04:33 浏览: 118
递归算法实现二分查找的Java代码可以参考以下示例:
```java
public class BinarySearch {
public static void main(String[] args) {
int[] nums = {1, 2, 6, 15, 18, 20, 25, 27, 35, 40, 45, 56, 62, 78, 88};
int findValue = 35;
int binaryResult = binarySearch(nums, 0, nums.length - 1, findValue);
System.out.println("元素第一次出现的位置(从0开始):" + binaryResult);
}
private static int binarySearch(int[] nums, int start, int end, int findValue) {
if (start <= end) {
int middle = (start + end) / 2;
if (findValue == nums[middle]) {
return middle; // 查找值等于中间值直接返回
} else if (findValue < nums[middle]) {
return binarySearch(nums, start, middle - 1, findValue); // 小于中间值,在中间值之前的数据中查找
} else {
return binarySearch(nums, middle + 1, end, findValue); // 大于中间值,在中间值之后的数据中查找
}
}
return -1;
}
}
```
这个递归实现的二分查找算法首先检查开始下标`start`是否小于等于结束下标`end`,如果是,则计算中间下标`middle`。然后通过比较查找值`findValue`与中间值`nums[middle]`的大小,决定是在中间值之前的数据中查找还是在中间值之后的数据中查找,递归调用`binarySearch`方法。如果查找值等于中间值,则直接返回中间下标;如果查找值小于中间值,则在中间值之前的数据中查找,更新结束下标`end`为`middle - 1`;如果查找值大于中间值,则在中间值之后的数据中查找,更新开始下标`start`为`middle + 1`。如果开始下标大于结束下标,表示未找到查找值,返回-1。
这样的递归实现方式能够不断缩小查找范围,提高查找效率。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [二分查找递归解法(java)](https://blog.csdn.net/weixin_51577444/article/details/123763009)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *2* *3* [Java常用算法-二分查找算法(两种方法实现)](https://blog.csdn.net/zengqing2010/article/details/120680127)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
阅读全文