首页 > 其他分享 >二分法查找目标元素在数组中的索引

二分法查找目标元素在数组中的索引

时间:2023-07-08 10:56:24浏览次数:64  
标签:arr middle target nums int 二分法 索引 查找 left

/**
     * 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target  ,写一个函数搜索 nums 中的 target,
     * 如果目标值存在返回下标,否则返回 -1。
     * 输入: nums = [-1,0,3,5,9,12], target = 9
     * 输出: 4
     * 解释: 9 出现在 nums 中并且下标为 4
     * 输入: nums = [-1,0,3,5,9,12], target = 2
     * 输出: -1
     * 解释: 2 不存在 nums 中因此返回 -1
     */
    public  int getTarget(int[] arr,int target){
        int left = 0;
        int right = arr.length - 1;

        while (left <= right){
            int middle = (left + right) /2;
            if(target < arr[middle]){
                right = middle - 1;
            }else if(target > arr[middle]){
                left = middle + 1;
            }else {
                return middle;
            }
        }
        return -1;
    }

    @Test
    public void test1(){
        int[] nums = new int[]{-1,0,3,5,9,12};
//        int target = getTarget(nums, 9);
        int target = getTarget(nums, 2);
        System.out.println(target);

    }

  while里面left<=right因为等于时也不会越界

  target < arr[middle]时说明target元素的索引肯定不是middle所以right取middle前一个索引

标签:arr,middle,target,nums,int,二分法,索引,查找,left
From: https://www.cnblogs.com/sgj191024/p/17536863.html

相关文章

  • 查找多个字符串的正则表达式
    非元组捕获的语法为:(?:exp) 比如查找江浙沪包邮区:(?:浙江|上海|江苏) 元组的概念(待补充)Python中的元组Python中元组(Tuple)是一种特殊的列表,是Python中可以用于存储数据集合数据类型。它的特殊性是:元组是一个是有序的且不可改变的集合......
  • 42. 查找算法
    一、线性查找算法  线性查找是逐一比对,发现有相同值,就返回下标,否则返回-1。这里,我们实现的线性查找是找到一个满足条件的值就返回。/***@brief线性查找**@paramA待查找的数组*@paramN数组的长度*@paramvalue待查找的元素*@returnint如果找到返回......
  • C++黑马程序员——P189-192. string容器 构造函数,赋值,拼接,查找和替换
    P189.string容器——构造函数P190....——赋值操作P191....——字符串拼接P192....——字符串查找和替换P189.构造函数———————————————————————————————————————————————————————————————......
  • 新增文章创建索引
                        文章微服务异步调用生成静态文件,上传到minIO之后发送消息到MQ,因为创建索引需要staticurl。packagecom.heima.article.service.impl;importcom.alibaba.fastjson.JSON;importcom.alibaba.fastjson.JSONA......
  • C盘清理教程丨“Windows.edb”索引文件过大的处理方法
    如果windows10系统下的C盘可用空间越来越少,而且并没有安装新软件,也没有保存新文件。那么,非常有可能是“Windows.edb”索引文件过大的原因。关于该文件的介绍可参考《C盘清理教程丨24G大的“Windows.edb”是什么文件,可以删除吗?》https://baiyunju.cc/6693由于只要开启windows搜索......
  • 6月《中国数据库行业分析报告》已发布,首发空间、搜索引擎数据库【全球产业图谱】
    为了帮助大家及时了解中国数据库行业发展现状、梳理当前数据库市场环境和产品生态等情况,从2022年4月起,墨天轮社区行业分析研究团队出品将持续每月为大家推出最新《中国数据库行业分析报告》,持续传播数据技术知识、努力促进技术创新与行业生态发展,目前已更至第十四期,并发布了共计1......
  • 苹果手机丢失如何查找手机位置
    苹果手机丢失想要查找手机位置如何查找?其实不难,苹果手机可以通过查找功能来找到手机位置,查找的渠道有2个:1、手机;2、电脑。1、手机  ①找朋友或家人借一部苹果手机,登录自己的AppleID。完成登录后,在手机桌面打开查找。  ②在查找界面,点击设备。  ③在......
  • git在日志中查找这个文件
    git在日志中查找这个文件.gitlog--pretty=oneline--branches--文件名或gitlog--pretty=oneline--branches--文件夹名注意:文件(夹)名和--前必须有空格参考:https://www.yii666.com/blog/330372.html?action=onAll......
  • 禁止apache显示目录索引
    第一种方法:修改Apache配置文件[httpd.conf],搜索“OptionsIndexesFollowSymLinks”,修改为“Options-IndexesFollowSymLinks”即可。在OptionsIndexesFollowSymLinks在Indexes前面加上–符号。备注:在Indexes前,加+代表允许目录浏览;加–代表禁止目录浏览。这样的话就属于......
  • Mysql索引为什么选择B+树
    前言谈到索引,大家并不陌生。索引本身是一种数据结构,存在的目的主要是为了提高数据查询效率,最大程度减少磁盘IO。那么MysqlInnoDB存储引擎为什么选择B+树,而不是二叉树、B树,Hash等数据结构呢?使用二叉树会有哪些问题?了解过二叉树的都知道,一个节点只能有两个子节点,一个子节点只能......