1.1二分查找
二分查找,主要是针对基本有序的数据来进行查找target。
二分法的思想很简单,因为整个数组是有序的,数组默认是递增的。
1.1 使用条件
- 用于查找的内容逻辑上来说是需要有序的
- 查找的数量只能是一个,而不是多个
1.2 简介
- 首先选择数组中间的数字和需要查找的目标值比较 如果相等最好,就可以直接返回答案了
- 如果不相等
- 如果中间的数字大于目标值,则中间数字向右的所有数字都大于目标值,全部排除
- 如果中间的数字小于目标值,则中间数字向左的所有数字都小于目标值,全部排除
2 代码
- 循环条件要使用while(left<= right),因为当(left== right)这种情况发生的时候,得到的结果是有意义的
- if(nums[mid] > target) , right要赋值为 mid- 1, 因为当前的 nums[mid]
一定不是 target ,需要把这个 mid位置上面的数字丢弃,那么接下来需要查找范围就是[left, mid- 1]
2.1 非递归方法:
public class BinarySearch {public static void main(String[] args) {int [] nums = {1,2,3,4,5,9,10,11,19,25};int target = 19;/** 第一种方法:实例化对象,BinarySearch test = new BinarySearch();System.out.println("实例化对象调用:"+search(nums,target));*///第二种方法:直接通过类名.方法名调用,方法为static的时候使用System.out.println("下标为:"+ BinarySearch.search(nums,target));}//非递归查找public static int search(int[] nums, int target){int len = nums.length;int left=0;int right=len-1;//目标存在的区间可能在两者之间 注意"="号while(left<=right){int mid = (left+(right-left)/2);if(nums[mid]==target){return mid;}else{if(nums[mid]>target){right = mid - 1 ;}else{left = mid +1 ;}}}return -1;}}
2.2 递归查找
public class BinarySearch02 {public static void main(String[] args) {int [] nums = {1,2,3,4,5,9,10,11,19,25};int target = 19;//递归需要传参数int left = 0;int len = nums.length;int right = len-1;//直接通过类名.方法名调用,方法为static的时候使用System.out.println("下标为:"+ BinarySearch02.Digui(nums,left,right,target));}//递归查找public static int Digui(int[] nums, int left, int right, int target) {while (left <= right) {int mid = left + (right - left) / 2;if (nums[mid] > target) {return Digui(nums, left, mid - 1, target);} else if (nums[mid] < target) {return Digui(nums, mid + 1, right, target);} else {return mid;}}return -1;}
}
相关文章:
1.1二分查找
二分查找,主要是针对基本有序的数据来进行查找target。 二分法的思想很简单,因为整个数组是有序的,数组默认是递增的。 1.1 使用条件 用于查找的内容逻辑上来说是需要有序的查找的数量只能是一个,而不是多个 1.2 简介 首先选…...
提升工作效率,打造精细思维——OmniOutliner 5 Pro for Mac
在当今快节奏的工作环境中,如何高效地组织和管理我们的思维和任务成为了关键。而OmniOutliner 5 Pro for Mac正是为此而生的一款强大工具。无论你是专业写作者、项目经理还是学生,OmniOutliner 5 Pro for Mac都能帮助你提升工作效率,打造精细…...
idea显示pom.xml文件漂黄警告 Dependency maven:xxx:xxx is vulnerable
场景: idea警告某些maven依赖包有漏洞或者依赖传递有易受攻击包,如下: 解决: 1、打开idea设置,找到 File | Settings | Editor | Inspections 2、取消上述两项勾选即可...
Linux中安装部署环境(JAVA)
目录 在Linux中安装jdk 包管理器yum安装jdk JDK安装过程中的问题 验证安装jdk 在Linux中安装tomcat 安装mysql 在Linux中安装jdk jdk在Linux中的安装方式有很多种, 这里介绍最简单的方法, 也就是包管理器方法: 包管理器yum安装jdk Linux中常见的包管理器有: yumaptp…...
Zabbix Proxy分布式监控
目录 Zabbix Proxy简介 实验环境 proxy端配置 1.安装仓库 2.安装zabbix-proxy 3.创建初始数据库 4.导入初始架构和数据,系统将提示您输入新创建的密码 5.编辑配置文件 /etc/zabbix/zabbix_proxy.conf,配置完成后要重启。 agent客户端配置 zabbix…...
前端设计模式之【代理模式】
文章目录 前言介绍例子场景优缺点标题五后言 前言 hello world欢迎来到前端的新世界 😜当前文章系列专栏:前端设计模式 🐱👓博主在前端领域还有很多知识和技术需要掌握,正在不断努力填补技术短板。(如果出现错误&…...
Canal+Kafka实现MySQL与Redis数据同步(二)
CanalKafka实现MySQL与Redis数据同步(二) 创建MQ消费者进行同步 在application.yml配置文件加上kafka的配置信息: spring:kafka:# Kafka服务地址bootstrap-servers: 127.0.0.1:9092consumer:# 指定一个默认的组名group-id: consumer-group…...
NOIP2023模拟19联测40 诡异键盘
题目大意 有一个键盘,上面有 n 1 n1 n1个按键,按下按键 1 ≤ i ≤ n 1\leq i\leq n 1≤i≤n会打印出字符串 S i S_i Si,按下按键 n 1 n1 n1会删掉结尾的 K K K个字符,如果不足 K K K个字符则全部删完,问打印出 S …...
算法设计与分析 | 众数问题(c语言)
题目 所谓众数,就是对于给定的含有N个元素的多重集合,每个元素在S中出现次数最多的成为该元素的重数, 多重集合S重的重数最大的元素成为众数。例如:S{1,2,2,2,3,5},则多重集S的众数是2,其重数为3。 现在你…...
sql server外键设置
SQL Server外键设置 简介 在关系型数据库中,外键是一种约束,用于确保数据的完整性和一致性。外键约束定义了一个表中的列与另一个表中的列之间的关系,它可以用来保证数据的一致性、防止数据的破坏和数据冗余。在SQL Server中,我们…...
R语言实现多变量孟德尔随机化分析(1)
多变量孟德尔随机化分析调整了潜在混杂因素的影响。 1、调整哪些因素?参考以往文献。可以分别调整,也可以一起调整。 2、解决了什么问题?某个暴露相关的SNP,往往与某个或者某几个混杂因素相关。可以控制混杂偏倚。 3、如何解释…...
搭建 AI 图像生成器 (SAAS) php laravel
今天来搭一套,AI 图像生成器 是基于 Openai DALLE 2 和 Openai DALLE 3 以及 Stability AI 和稳定扩散 API 构建的脚本,为用户提供了使用简单的提示和大小生成独特自定义图像的可能性。在这个平台上,创意得以快速、高效地实现,借助…...
Maven引用本地jar包
先上命令: mvn install:install-file -Dfile..\.m2\repository\jl1.0.1.jar -DgroupId"com.liz.local" -DartifactId"jl" -Dversion"1.0.1" -Dpackagingjar 参数注释: -Dfile: jar 包路径(建议放在 meven 的 repository&…...
一起学docker系列之五docker的常用命令--操作容器的命令
目录 前言1 启动容器2 查看容器3 退出容器4 启动已经停止的容器5 重启容器6 停止容器7 删除已经停止的容器8 启动容器说明和举例9 查看容器日志10 查看容器内运行的进程11 查看容器内部细节12 进入正在运行的容器并进行交互13 导入和导出容器结语 前言 当涉及到容器化技术&…...
WPF打开对话框选择文件、选择文件夹
在WPF中实现文件的打开和选择,可以通过使用Microsoft.Win32.OpenFileDialog类来完成。这是一个通用的对话框组件,允许用户在本地文件系统中浏览和选择文件。这个组件属于WPF的一部分,因此不需要引用额外的库。 以下是一个如何使用OpenFileDi…...
nginx学习(3)
Nginx 负载均衡 实战案例 实现效果 浏览器地址栏输入地址 http://172.31.0.99/oa/a.html,负载均衡效果,平均 8083 和 8084 端口中 一、配置 1、先创建2个文件夹,并将apache-tomcat-8.5.87解压到tomcat8083和tomcat8084中 (或…...
【系统架构设计】计算机公共基础知识: 4 数据库系统
目录 一 数据库模式 二 分布式数据库 三 索引和视图 四 数据库设计 五 关系代数...
主键问题以及分布式 id
分布式 id 需要处理的问题主要是同一时间在多台机器中保证生成的 id 唯一,为了这么做我们可以这么做: 分布式 id 生成策略 先说几个已经被淘汰的策略引出分布式 id 的问题 1,UUID:UUID 随机并且唯一,在单一的数据库…...
ReentranReadWriteLock 使用案例
ReentranReadWriteLock使用案例 /*** ReentranReadWriteLock 使用案例* 读线程共享* 写线程互斥*/ public class ReentrantReadWriteLockExample {private String news;private ReentrantReadWriteLock lock new ReentrantReadWriteLock();public String readNews() {lock.re…...
“我们把最扎心的话,说给了自己最亲近的人” 何解?| IDCF
引子 我们把最好的一面给了陌生人,却把最扎心的话,说给了自己最亲近的人。 我们往往会对关心自己的人发脾气,很多时候意图是好的,表达方式却简单粗暴,结果自然不必多言。你认为自己给的是反馈和建议,对方…...
eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)
说明: 想象一下,你正在用eNSP搭建一个虚拟的网络世界,里面有虚拟的路由器、交换机、电脑(PC)等等。这些设备都在你的电脑里面“运行”,它们之间可以互相通信,就像一个封闭的小王国。 但是&#…...
《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)
CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...
抖音增长新引擎:品融电商,一站式全案代运营领跑者
抖音增长新引擎:品融电商,一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中,品牌如何破浪前行?自建团队成本高、效果难控;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...
现代密码学 | 椭圆曲线密码学—附py代码
Elliptic Curve Cryptography 椭圆曲线密码学(ECC)是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础,例如椭圆曲线数字签…...
WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)
一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...
Unit 1 深度强化学习简介
Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库,例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体,比如 SnowballFight、Huggy the Do…...
全志A40i android7.1 调试信息打印串口由uart0改为uart3
一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…...
python执行测试用例,allure报乱码且未成功生成报告
allure执行测试用例时显示乱码:‘allure’ �����ڲ����ⲿ���Ҳ���ǿ�&am…...
Xen Server服务器释放磁盘空间
disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...
