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

[算法] 二分查找

package com.guigu.search;import java.util.ArrayList;
import java.util.Arrays;/*** @author: guorui fu* @versiion: 1.0* 二分查找 直接适用于已经排序完成的数组*/
public class BinarySearch {public static void main(String[] args) {int arr[] = {1,8,8,89,101,1234};ArrayList<Integer> resIndex = binarySearch(arr, 0, arr.length, 8);if (resIndex.isEmpty()){System.out.println("找不到目标值");}else{System.out.println("所找值下标=" + resIndex);}}//二分查找算法/**** @param arr 数组* @param left 左边的索引* @param right 右边的索引* @param findVal 要查找的值* @return 返回下标 或返回-1*/public static ArrayList<Integer> binarySearch(int[] arr,int left,int right,int findVal){//如果left > right 则说明找不到 返回-1if (left > right){return new ArrayList<Integer>();}int mid = (left + right)/2;int midVal = arr[mid];if (findVal > midVal){//向右递归return binarySearch(arr, mid + 1, right, findVal);}else if (findVal < midVal){//向左递归return binarySearch(arr,left,mid - 1,findVal);}else {//找到mid索引值,不要马上返回 加入集合 继续扫描ArrayList<Integer> resIndexList = new ArrayList<>();int temp = mid -1;while (true){if (temp < 0 || arr[temp] != findVal){//退出break;}//否则,就temp放入到集合中resIndexList.add(temp);temp -= 1;//temp左移}resIndexList.add(mid);//向mid索引值的右边扫描,将所有满足1000 的元素的下标,加入到集合ArrayListtemp = mid + 1;while (true){if (temp > arr.length - 1 || arr[temp] != findVal){//退出break;}//否则,就temp放入到集合中resIndexList.add(temp);temp += 1;//temp右移}return resIndexList;}}
}

相关文章:

[算法] 二分查找

package com.guigu.search;import java.util.ArrayList; import java.util.Arrays;/*** author: guorui fu* versiion: 1.0* 二分查找 直接适用于已经排序完成的数组*/ public class BinarySearch {public static void main(String[] args) {int arr[] {1,8,8,89,101,1234};Ar…...

HTML面经

1.src与href的区别 src用于替换当前元素&#xff0c;如script标签&#xff0c;img标签等。当html解析到这些标签时&#xff0c;会暂停解析&#xff0c;将指定的资源下载下来&#xff0c;嵌入到所在位置内。href的话则是一个当前页面与引用资源之间的链接&#xff0c;如link标签…...

我的十年编程路 2021年篇

慢慢地&#xff0c;时光走过了8个年头&#xff0c;来到2021年。 站在2021年&#xff0c;回望8年的过往&#xff0c;没有大的起伏和波澜。或许是上天的眷顾&#xff0c;我的事业发展一直都很顺利。当然&#xff0c;弯路也走过一些&#xff0c;而且工作其实挺辗转的&#xff0c;…...

ElasticSearch 8 学习笔记总结(七)

感觉这些东西没必要认真学&#xff0c;了解一下&#xff0c;工作用到再学。 文章目录一、ES8 EQL 介绍二、ES8 EQL基本操作 与 安全检测三、ES SQL操作四、ES SQL与DSL的关系五、ES 常用的SQL操作六、ES datagrip配置ES七、ES8 自然语言处理 NLP八、ES8 性能优化 之 缓存九、ES…...

【云原生】Docker 网络模式详解、容器间网络通信

当项目大规模使用 Docker 时&#xff0c;容器通信的问题也就产生了。要解决容器通信问题&#xff0c;必须先了解很多关于网络的知识。Docker 作为目前最火的轻量级容器技术&#xff0c;有很多令人称道的功能&#xff0c;也有着很多不完善的地方&#xff0c;网络方面就是 Docker…...

Java开发 - 布隆过滤器初体验

目录 前言 布隆过滤器 什么是布隆过滤器 布隆过滤器的作用 布隆过滤器原理 怎么设计布隆过滤器 布隆过滤器使用案例 安装布隆过滤器 添加依赖 添加配置 添加工具类 添加测试代码 简单测试 特别提醒​​​​​​​ 结语 前言 前面三篇&#xff0c;已经把消息队列…...

【计算机组成原理 - 第一章】计算机系统概论(完结)

本章参考王道考研相关课程&#xff1a; 【2021版】1.2.1_计算机硬件的基本组成_哔哩哔哩_bilibili 【2021版】1.2.2_认识各个硬件部件_哔哩哔哩_bilibili 【2021版】1.2.3_计算机系统的层次结构_哔哩哔哩_bilibili 【2021版】1.3_计算机的性能指标_哔哩哔哩_bilibili 目录 一、…...

C++类与对象(下)【详析】

类与对象&#xff08;下&#xff09; 目录类与对象&#xff08;下&#xff09;一、再谈构造函数1.构造函数体赋值2.初始化列表定义&#xff1a;注意点&#xff1a;总结&#xff1a;3.explicit关键字引入&#xff1a;explicit&#xff1a;二、 static成员回顾&#xff1a;static…...

exe反编译为.py文件

介绍公司以前的一个exe包&#xff0c;我们需要查看里面python源码&#xff0c;但是以前的py源码文件找不到&#xff0c;所以只能反编译&#xff0c;介绍一下反编译的过程。首先准备&#xff1a;pyinstxtractor.py这个文件&#xff0c;网上很多&#xff0c;自己下载准备查看二进…...

38 openEuler搭建FTP服务器-FTP总体介绍

文章目录38 openEuler搭建FTP服务器-FTP总体介绍38.1 FTP简介38.2 FTP使用到的端口38.3 vsftpd简介38 openEuler搭建FTP服务器-FTP总体介绍 38.1 FTP简介 FTP&#xff08;File Transfer Protocol&#xff09;即文件传输协议&#xff0c;是互联网最早的传输协议之一&#xff0…...

三天吃透操作系统面试八股文

本文已经收录到Github仓库&#xff0c;该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等核心知识点&#xff0c;欢迎star~ Github地址&#xff1a;https://github.com/…...

vue后台管理系统——添加i18n国际化功能——技能提升

昨天在写后台管理系统时&#xff0c;遇到一个需求就是需要实现国际化功能。 antd和element-ui这两个框架其实都是有国际化的。 具体展示形式就是如下&#xff1a; 点击右上角头部的语言&#xff0c;切换语言&#xff0c;然后整个系统的文字都改变成对应的语言展示。 切换成…...

理清gcc、g++、libc、glibc、libstdc++的关系

0 理清gcc、g++、libc、glibc、libstdc++的关系 0.1 $ dpkg -L libc6 $ dpkg -L libc6 /lib/x86_64-linux-gnu /lib/x86_64-linux-gnu/ld-2.31.so /lib/x86_64-linux-gnu/libBrokenLocale-2.31.so /lib/x86_64-linux-gnu/libSegFault.so /lib/x86_64-linux-gnu/libanl-2.31.s…...

一、快速入门 MongoDB 数据库

文章目录一、NoSQL 是什么1.1 NoSQL 简史1.2 NoSQL 的种类及其特性1.3 NoSQL 特点1.4 NoSQL 的优缺点1.5 NoSQL 与 SQL 数据库的比较二、MongoDB 基础知识2.1 MongoDB 是什么2.2 MongoDB 的体系结构2.3 MongoDB 的特点2.4 MongoDB 键特性2.5 MongoDB 的核心服务和工具2.6 Mongo…...

PMP第一章到第三章重要知识点

第1章引论 1.1指南概述和目的 PMBOK指南收录项目管理知识体系中被普遍认可为“良好实践”的那一部分&#xff1a; “普遍认可”&#xff1a;大多数时候适用于大多数项目&#xff0c;获得一致认可。 “良好实践”&#xff1a;能提高很多项目成功的可能性。 全球项目管理业界…...

【事务与锁】当Transactional遇上synchronized

事务与锁 - Transactional与Synchronize&#x1f970;前言问题回放问题一1、代码与结果复现2、原因分析3、解决方法问题二1、问题复现2、原因分析事务Transactional与锁synchronized1、synchronized与Transactional区别2、可能带来的问题3、针对问题二的解决前言 最近工作中遇…...

Pytorch模型转TensorRT步骤

Pytorch模型转TensorRT步骤 yolov5转TRT 流程 当前项目基于yolov5-6.0版本&#xff0c;如果使用其他版本代码请参考 https://github.com/wang-xinyu/tensorrtx/tree/master/yolov5 获取转换项目&#xff1a; git clone https://github.com/wang-xinyu/tensorrtx.git git …...

产品经理入门——必备技能之【产品运营】

文章目录一、基础介绍1.1 用户生命周期 & 产品生命周期1.2 运营的目的1.3 运营的阶段1.4 运营的主要工作&#xff08;海盗模型&#xff09;二、AARRR模型2.1 Acquisition 拉新2.2 Activision 促活2.3 Retention 留存2.4 Revenue 转化2.5 Referral 传播总结产品运营技能是产…...

【Java实现文件上传】java后端+vue前端实现文件上传全过程详解(附源码)

【写在前面】其实这篇文章我早就想写了&#xff0c;只是一直被需求开发耽搁&#xff0c;这不晚上刚好下班后有点时间&#xff0c;记录一下。需求是excel表格的上传&#xff0c;这个是很多业务系统不可或缺的功能点&#xff0c;再此也希望您能够读完我这篇文章对文件上传不再困惑…...

什么是SSD?SSD简述

什么是SSD&#xff1f;SSD简述前言一. SSD组成二. SSD存储介质存储介质按材料不同可分为三大类&#xff1a;光学存储介质、半导体存储介质和磁性存储介质三. SSD接口形态固态硬盘有SATA 3.0接口、MSATA接口、M.2接口、PCI-E接口、U.2接口五种类型。三. SSD闪存颗粒分类闪存颗粒…...

为什么顶尖投行/律所/药企已将Perplexity设为默认搜索端口?:拆解其底层Provenance Graph引擎与ChatGPT RAG架构的7层信任差

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Perplexity与ChatGPT搜索范式的根本性分野 Perplexity 和 ChatGPT 代表两种截然不同的信息交互哲学&#xff1a;前者以**可验证的溯源驱动**为核心&#xff0c;后者以**生成连贯性优先**为设计原则。这…...

Visual C++运行库智能修复技术方案:高效解决Windows软件依赖问题的终极指南

Visual C运行库智能修复技术方案&#xff1a;高效解决Windows软件依赖问题的终极指南 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist Visual C Redistributable运…...

CANN/ge图引擎AIPP补边参数设置

aclmdlSetAIPPPaddingParams 【免费下载链接】ge GE&#xff08;Graph Engine&#xff09;是面向昇腾的图编译器和执行器&#xff0c;提供了计算图优化、多流并行、内存复用和模型下沉等技术手段&#xff0c;加速模型执行效率&#xff0c;减少模型内存占用。 GE 提供对 PyTorch…...

CherryPy与数据库集成:SQLAlchemy和ORM模式详解

CherryPy与数据库集成&#xff1a;SQLAlchemy和ORM模式详解 【免费下载链接】cherrypy CherryPy is a pythonic, object-oriented HTTP framework. https://cherrypy.dev 项目地址: https://gitcode.com/gh_mirrors/ch/cherrypy CherryPy是一个Python风格的面向对象HTTP…...

从‘水管’到‘高速公路’:用‘时延带宽积’重新理解你的网络容量,别再让高带宽‘空转’了

从‘水管’到‘高速公路’&#xff1a;用‘时延带宽积’重新理解你的网络容量 想象一下&#xff0c;你正驾驶一辆满载数据的卡车行驶在数字高速公路上。这条路的车道数&#xff08;带宽&#xff09;让你欣喜若狂&#xff0c;但开了半天却发现路上几乎没几辆车——这就是许多工程…...

基于MCP协议构建PrismHR连接器:打通HR数据孤岛,赋能AI原生应用

1. 项目概述&#xff1a;一个连接器&#xff0c;打通HR数据孤岛最近在做一个企业内部的HR系统集成项目&#xff0c;遇到了一个典型的老大难问题&#xff1a;核心的HRIS&#xff08;人力资源信息系统&#xff09;是PrismHR&#xff0c;但公司内部还有一大堆其他系统&#xff0c;…...

Honey Select 2终极汉化补丁:一站式解决语言障碍与功能扩展难题

Honey Select 2终极汉化补丁&#xff1a;一站式解决语言障碍与功能扩展难题 【免费下载链接】HS2-HF_Patch Automatically translate, uncensor and update HoneySelect2! 项目地址: https://gitcode.com/gh_mirrors/hs/HS2-HF_Patch 想象一下&#xff0c;你刚刚下载了备…...

别再只盯着Modbus了!聊聊MBUS总线在智慧水务中的那些坑与最佳实践

MBUS总线在智慧水务中的实战指南&#xff1a;从协议解析到避坑实践 当智慧水务项目进入实施阶段&#xff0c;技术选型团队往往会陷入协议选择的困境。Modbus以其通用性成为首选&#xff0c;LoRa凭借无线优势占据一席之地&#xff0c;而MBUS&#xff08;Meter-Bus&#xff09;这…...

AI Agent + 指纹浏览器:从0搭建MCP Server实现批量账号自动化管理

我是张大鹏&#xff0c;做了十多年人工智能&#xff0c;带过不少项目。说实话&#xff0c;AI Agent 最难的不是生成内容&#xff0c;是"动手干活"——大模型再强&#xff0c;如果只能输出文字而不能操控真实环境&#xff0c;自动化就永远差最后一公里。最近在研究 In…...

用好外勤数据,一年能帮你省下多少管理成本?

很多公司买外勤软件的初衷很简单&#xff1a;知道业务员在哪里&#xff0c;有没有去客户那边。打卡、定位、签到——这三件事做到了&#xff0c;觉得系统就发挥作用了。 一年过去&#xff0c;后台积累了几万条拜访记录、几千个停留点位、每个人每天的行动轨迹。这些数据安静地躺…...