当前位置: 首页 > article >正文

算法——二分查找(leetcode704)

对于二分查找而言,首先我们得到的查找数组必须是一个有序数组,接着通过数组的两端得到左指针和右指针继而得到中间指针指向数组中间元素,将中间元素与目标值比较如果大于目标值舍弃数组中间元素右边的一半将右指针重置为中间指针下标-1中间指针重置为左右指针下标之和除以2(如果中间元素与目标值比较小于目标值则舍弃数组中间元素左边的一半将左指针重置为中间指针下标+1)然后就得到剩下左右指针所包括的待对比数组元素重复上述步骤直至找出目标值或者左指针下标大于右指针下标即未找到目标元素。

如下分别是左右指针数组边界左闭右闭和左闭右开两种情况的代码

class Solution {
    public int search(int[] nums, int target) {
        int left=0;
        int right=nums.length-1;
        int middle=(left+right)/2;
        while(left<=right){
            if(nums[middle]==target)
            return middle;
            if(nums[middle]>target){
                right=middle-1;
                middle=(left+right)/2;
            }
            if(nums[middle]<target){
                left=middle+1;
                middle=(left+right)/2;
            }
        }
return -1;
    }
}
class Solution {
    public int search(int[] nums, int target) {
        int left=0;
        int right=nums.length;
        int middle=(left+right)/2;
        while(left<right){
            if(nums[middle]==target)
            return middle;
            if(nums[middle]>target){
                right=middle;
                middle=(left+right)/2;
            }
            if(nums[middle]<target){
                left=middle+1;
                middle=(left+right)/2;
            }
        }
return -1;
    }
}


http://www.kler.cn/a/392969.html

相关文章:

  • @ComponentScan:Spring Boot中的自动装配大师
  • 在 Ubuntu 上安装 `.deb` 软件包有几种方法
  • Wireshark
  • 如何提高自动驾驶中惯性和卫星组合导航pbox的精度?
  • 动态规划 —— 子数组系列-最大子数组和
  • 【大数据技术基础 | 实验十】Hive实验:部署Hive
  • kafka和Flume的整合
  • Linux 系统管理和监控命令---- auditctl命令
  • 【机器学习】29. 关联规则挖掘(Association Rule Mining)
  • Linux下的vim和gdb
  • day55 图论章节刷题Part07([53.寻宝]prim算法、kruskal算法)
  • Window.history API学习笔记
  • 基于flask+jwt+vue前后端分离架构
  • 如何提高业务系统的稳定性
  • 浅谈C#之内存管理
  • 【无人机设计与控制】无人机集群路径规划:5种最新优化算法(ECO、AOA、SFOA、MGO、PLO)求解无人机集群路径规划
  • 鸿蒙学习生态应用开发能力全景图-三方库(3)
  • 专题十八_动态规划_斐波那契数列模型_路径问题_算法专题详细总结
  • C语言中操作符详解(下)
  • MFC工控项目实例二十九主对话框调用子对话框设定参数值
  • 当微软windows的记事本被AI加持
  • 定时清理潜在客户列表中的无效邮箱可提高EDM电子邮件自动化营销邮件送达率
  • Android插件化和组件化面试题及参考答案
  • Mac的极速文件搜索工具,高效管理文件
  • 时序数据库TimescaleDB安装部署以及常见使用
  • 手机直连卫星NTN通信初步研究