【数算-29】【十大常用算法-01】非递归二分查找
发布日期:2021-05-07 08:58:07 浏览次数:19 分类:精选文章

本文共 1462 字,大约阅读时间需要 4 分钟。

文章目录

1、递归式二分查找

public class BinarySearch {       /**     * @param arr    待查找数组     * @param left   左侧索引     * @param right  右侧索引     * @param target 待查找目标值     * @Method binarySearch     * @Author zhihua.Li     * @Version 1.0     * @Description 针对要查找的值在待查找数组中只有一个     * @Return int     * @Exception     * @Date 2021/2/7 8:16     */    private int binarySearch(int[] arr, int left, int right, int target) {           if (left > right) {               return -1;        }        int mid = (left + right) / 2;        int midValue = arr[mid];        if (midValue < target) {               return binarySearch(arr, mid + 1, right, target);        } else if (midValue > target) {               return binarySearch(arr, left, mid - 1, target);        } else {               return mid;        }    }  }

2、非递归式二分查找

1、算法介绍

在这里插入图片描述

2、代码实现

//  二分查找的非递归实现法    private int binarySearch(int[] arr, int target) {           int left = 0;        int right = arr.length - 1;        int mid;        while (left <= right) {               mid = (left + right) / 2;            if (arr[mid] == target) {                   return mid;            } else if (arr[mid] < target) {                   left = mid + 1;            } else {                   right = mid - 1;            }        }        return -1;    }

3、代码测试

@Test    public void test() {           int[] arr = {   1, 4, 8, 13, 14, 20, 100};        int i = binarySearch(arr, 14);        System.out.println("index = " + i);    }

运行结果为:

在这里插入图片描述

上一篇:vue(10):路由
下一篇:【数算-28】图

发表评论

最新留言

初次前来,多多关照!
[***.217.46.12]2025年03月20日 11时29分24秒