Java中Binary Search如何实现

   2024-10-07 7490
核心提示:在Java中,可以使用递归或迭代的方式实现二分搜索算法。以下是一个使用迭代方式实现的示例代码:public static int binarySearch

在Java中,可以使用递归或迭代的方式实现二分搜索算法。以下是一个使用迭代方式实现的示例代码:

public static int binarySearch(int[] arr, int target) {    int left = 0;    int right = arr.length - 1;    while (left <= right) {        int mid = left + (right - left) / 2;        if (arr[mid] == target) {            return mid;        } else if (arr[mid] < target) {            left = mid + 1;        } else {            right = mid - 1;        }    }    return -1; // 如果找不到目标元素,则返回-1}

在这段代码中,arr是一个已经排序的数组,target是要查找的目标元素。在每一次迭代中,我们计算中间元素的索引mid,然后根据arr[mid]target的大小关系来更新leftright的值,直到找到目标元素或者left > right为止。如果找到目标元素,则返回它的索引,否则返回-1表示未找到。

另外,也可以使用递归的方式实现二分搜索算法,递归的实现方式如下:

public static int binarySearchRecursive(int[] arr, int target) {    return binarySearchRecursive(arr, target, 0, arr.length - 1);}private static int binarySearchRecursive(int[] arr, int target, int left, int right) {    if (left > right) {        return -1;    }    int mid = left + (right - left) / 2;    if (arr[mid] == target) {        return mid;    } else if (arr[mid] < target) {        return binarySearchRecursive(arr, target, mid + 1, right);    } else {        return binarySearchRecursive(arr, target, left, mid - 1);    }}

在这段代码中,binarySearchRecursive方法是一个重载方法,它接受一个数组arr和目标元素target作为参数,并调用了另一个私有方法binarySearchRecursive来执行实际的搜索。在私有方法中,我们使用递归的方式来执行二分搜索,直到找到目标元素或者left > right为止。如果找到目标元素,则返回它的索引,否则返回-1表示未找到。

 
举报打赏
 
更多>同类物流大全
推荐图文
推荐物流大全
点击排行

网站首页  |  关于我们  |  联系方式网站留言    |  赣ICP备2021007278号