更新时间:2024-03-08 来源:黑马程序员 浏览量:
递归二分查找是一种经典的查找算法,用于在有序数组中查找特定元素的位置。下面是用Java实现递归二分查找的详细说明:
public class BinarySearch { // 递归二分查找方法 public static int binarySearch(int[] arr, int target) { return binarySearch(arr, target, 0, arr.length - 1); } // 辅助递归方法 private static int binarySearch(int[] arr, int target, int low, int high) { // 当low大于high时,说明整个数组已经搜索完毕,但未找到目标元素 if (low > high) { return -1; } // 计算中间元素的索引 int mid = low + (high - low) / 2; // 如果中间元素等于目标值,则返回该元素的索引 if (arr[mid] == target) { return mid; } // 如果中间元素大于目标值,则在左半部分继续查找 else if (arr[mid] > target) { return binarySearch(arr, target, low, mid - 1); } // 如果中间元素小于目标值,则在右半部分继续查找 else { return binarySearch(arr, target, mid + 1, high); } } public static void main(String[] args) { int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; int target = 6; int result = binarySearch(arr, target); if (result != -1) { System.out.println("目标元素 " + target + " 的索引为: " + result); } else { System.out.println("目标元素 " + target + " 不存在于数组中。"); } } }
在这个实现中,我们有两个方法:
1.binarySearch(int[] arr, int target):
这个方法是公开的二分查找方法,它调用了辅助递归方法,并传入了数组、目标值以及数组的起始和结束索引。
2.binarySearch(int[] arr, int target, int low, int high):
这个方法是私有的辅助递归方法。它接受一个数组、目标值以及搜索范围的起始和结束索引。在每一次递归调用中,它计算中间元素的索引,然后与目标值进行比较。如果找到目标值,则返回其索引;否则,根据目标值与中间元素的大小关系,递归地在左半部分或右半部分继续查找。
在main方法中,我们展示了如何使用这个二分查找算法。我们声明了一个有序数组arr,并指定了目标值 target,然后调用binarySearch方法来搜索目标值在数组中的位置。最后,根据返回的结果,输出相应的信息。
【AI设计】北京143期毕业仅36天,全员拿下高薪offer!黑马AI设计连续6期100%高薪就业
2025-09-19【跨境电商运营】深圳跨境电商运营毕业22个工作日,就业率91%+,最高薪资达13500元
2025-09-19【AI运维】郑州运维1期就业班,毕业14个工作日,班级93%同学已拿到Offer, 一线均薪资 1W+
2025-09-19【AI鸿蒙开发】上海校区AI鸿蒙开发4期5期,距离毕业21天,就业率91%,平均薪资14046元
2025-09-19【AI大模型开发-Python】毕业33个工作日,就业率已达到94.55%,班均薪资20763元
2025-09-19【AI智能应用开发-Java】毕业5个工作日就业率98.18%,最高薪资 17.5k*13薪,全班平均薪资9244元
2025-09-19