经典算法之二分查找 (Java实现,包含多道经典算法题解)

双语言刷题仓库实战:Java/Python题解组织与毕设算法模块改造 在算法学习与工程实践中,双语言题解仓库通过结构化组织提升代码复用效率。其原理在于按题目编号建立独立目录,每道题提供Java和Python双实现及说明文档,便于对照理解语言差异。这种组织方式的技术价值在于降低多语言环境下的学习与迁移成本,尤其适用于毕设开题、课程设计等需要快速搭建算法原型的场景。常见应用包括二分查找、动态规划等经典题型,通过本地环境配置与批量验证脚本确保代码可运行。自然收敛到lintcode题解仓库的实战改造,从刷题积累到可交付算法模块的完整路径。 阅读详情

二分查找

二分查找,是一种运用在静态数组中查找方法;总所周知,假设一长度为n的数组,若要从头遍历在其中查找目标值(target),平均时间复杂度为O(n),而二分查找的平均时间复杂度为O(logn),若在n很短的情况,差距确实可以忽略不计,但若n的长度为几千上万,则差距巨大,这也是算法是意义。
二分查找,是运用在排序数组中查找目标值的一种算法。数组已排序为该算法的必要条件。

实战演练

排序数组找出目标值

这是一道经典二分查找题,已知排序数组,找出target坐标,若不存在返回-1

    public static int search(int[] nums,int target){
        int l =0;// 左指针坐标 指向数组第一个元素
        int r = nums.length-1;//右指针坐标 指向数组最后一个元素
        int mid; //中间值坐标
        //注意 这个等于很关键,
        //如果是l<r则会过滤掉最后一个当l和r相等时的那个坐标
        //多说一句 这个l<r或l<=r 和下面的r = mid-1 、l=mid+1 是互相影响的
        //因为当r = mid而非mid-1 或者l=mid 而非mid+1;会出现不同结果
        //当然 这些其实并不需要太细致的去了解,因为二分查找的目的就是遍历到
        //数组中的每一个元素!!
        while (l<=r){//结束条件是左指针小于等于右指针 
        // l+(r-l)/2 等价于 (l+r)/2  那为什么不直接写 (l+r)/2呢
        // 因为两个int值相加时,可能会出现越界的情况,所以换一种写法
            mid = l+(r-l)/2;
            if(nums[mid]==target){
                return mid;//中间值等于目标值直接返回
            }else if(nums[mid]>target){
   //中间值大于目标值,则说明目标值必定出现在当前中间值的左侧,
  //注意 此地是r=mid-1 而非r=mid 我们上面已经做过判断了,mus[mid]==target
  // 说明mid坐标这个值必然不是target,而我们的循环条件while(l<=r) 使用的是<=
  //也就意味着假设一直做l++操作到最后一次循环,l和r相同,mid也就是等于r,
  //如果此r等于刚刚已经判断过的mid 则会重复判断,所以r=mid-1即可
                r = mid-1;
            }else if(nums[mid]<target){
   //与r = mid-1 同理 ,mid坐标值小于目标值 ,目标值必然不会出现mid左侧
                l  =mid+1;
            }
        }

        return -1;
    }

    public static void main(String[] args) {

        int[] num = {1,2,3,4,5,6,7,8,9};

        System.out.println(search(num, 7));
    }

}

java算法之二分查找法的实例详解 主要介绍了java算法之二分查找法的实例详解的相关资料,这里提供简单实例帮助大家学习理解这部分内容,需要的朋友可以参考下 立即下载

相关推荐

Java实现的两种常见简单查找算法示例【快速查找与二分查找】

主要介绍了Java实现的两种常见简单查找算法,结合具体实例形式分析了java快速查找与二分查找的原理与简单实现技巧,需要的朋友可以参考下

【Java】二分搜索系列学习+例题

java二分搜索系列例题刷题总结

rellvera的博客 985

水环境综合管控平台完整方案

水环境综合管控平台项目(2026-2027)摘要 项目概况: 总投资5亿元的水环境综合管控平台项目,是国家数字政府与生态文明建设战略的重要实践。项目严格遵循2026年最新政策标准,整合物联网、大数据和AI技术,构建覆盖水质监测、污染溯源、生态保护等全流程的智能管控体系。 核心内容: 系统架构:采用五层设计(基础设施层至展示层),集成10大核心功能模块,包括水质动态监测、污染智能溯源和生态评估预警系统; 技术创新:运用2026年最新边缘计算和数字孪生技术,实现毫秒级水质异常响应和三维流域仿真; 实施规划:分7

随读手记 403

二分查找_java实现

二分查找 经过尚硅谷韩顺平老师的视频讲解 总结下来的笔记 有序数组!!! 二分查找: 请对一个有序数组进行二分查找{1,8,10,89,1000,1234]},输入一个数看看该数组是否存在此数,并且求出下标,如果没有就提示"没有这个数”。 二分查找的思路分析Ⅰ 1.首先确定该数组的中间的下标mid= (left+right) / 2 2.然后让需要查找的数findval和arr[mid]比较 ---- findval > arr[mid],说明你要查找的数在mid的右边,因此需要递归的向右查找 -

zhangan_的博客 360

本地大模型部署实战:LM Studio与Ollama的易用性与性能深度评测

本文对两款主流本地大模型部署工具LM Studio和Ollama进行了深度评测。LM Studio凭借图形化界面和内置模型库,为新手提供了开箱即用的便捷体验,并支持OpenAI兼容API,易于生态集成。Ollama则以命令行驱动,轻量高效,凭借其原生API和Modelfile自定义能力,在自动化集成和性能方面表现突出。文章从易用性、模型生态、性能及扩展性多维度对比,帮助用户根据自身技术背景和使用场景做出最佳选择。

weixin_29039773的博客 528

AI气象预报:数值模式融合与短临预警的工程实践

气象预报正经历从物理推演到数据驱动的认知范式转变。AI气象预报并非替代传统数值模式,而是通过数值模式融合弥补其在参数化误差、初值敏感性和计算效率上的固有瓶颈。其技术价值在于提升短临预警时效性与空间精度,支撑航空调度、电力调控、防洪应急等关键场景。实践中需兼顾物理一致性、可解释性与业务系统兼容性,避免纯黑箱建模带来的外推失效与不确定性缺失风险。本文聚焦AI作为超分辨率引擎、误差矫正器和短临加速器的三类落地路径,解析HEALPix投影、多尺度图建模、轻量级U-Net等核心适配方法。

weixin_28221501的博客 298

java二分法查找示例

【代码】java二分法查找示例。

weixin_45811735的博客 388

群晖NAS实战:从零部署Container Manager与Docker代理配置全攻略

本文详细介绍了在群晖NAS上从零部署Container Manager与配置Docker代理的完整流程。针对国内用户常见的镜像拉取问题,提供了图形化界面与SSH命令行两种解决方案,并分享了MySQL容器部署的实战案例。文章特别强调了网络配置技巧和日常维护方法,帮助用户高效管理NAS上的容器应用。

weixin_29254673的博客 1300

Java中的二分查找

这道题应该是最常见的有关二分查找的例题,其中比较重要的点就是:1、静态方法怎么调用非静态方法,代码中的注释也出了答案。这段代码通过遍历二维数组的每一行,并在每一行中使用二分查找来高效地查找目标值。由此可见使用无符号右移运算符“>>>”,即使发生了类型溢出也不影响后续结果的正确与否。通过选择合适的起始点和移动方向,可以确保不会错过任何可能的区域,同时避免不必要的搜索。选择起始点:可以从左下角或右上角开始,因为这两个位置可以同时利用行和列的有序性。关于上面的代码还有另一种写法,并返回目标值的下标。

优快云_xysf的博客 975

YOLO11改进|注意力机制篇|引入ELA注意力机制

YOLO11添加ELA注意力机制

A1983Z的博客 3647

基于Simulink的双PMSM差速驱动转矩同步控制建模示例

本文详细介绍了基于Simulink的双永磁同步电机(PMSM)差速驱动转矩同步控制建模方法。针对AGV/叉车等双电机独立驱动系统的转矩不同步问题,提出主从式+交叉耦合控制策略,在Simulink中实现直线行驶、90°转弯和单轮打滑恢复三种工况的仿真验证。通过动力学建模、参数差异设置、同步误差定义及控制律设计,最终实现同步误差<3%、转弯半径跟踪误差<5%、打滑后100ms内恢复的性能指标。文章特别强调了实际工程中的参数标定、通信同步和故障处理要点,并提供了完整的Simulink建模步骤和工具箱使

xiaoheshang_123的博客 203

LeetCode --- 经典算法题之二分查找三回合

LeetCode经典算法题之二分查找 手撕算法~

wanghuichen的博客 1227

SpringAI系列 - MCP篇(二) - MCP Server Boot Starter

此处需注意之前的。

罗小爬的技术宝书 1318

doocs/leetcode Java题解精要

doocs/leetcode 是一个开源的 LeetCode 题解项目,提供多种编程语言的解决方案。该项目包含了数千道 LeetCode 题目的高质量解答,覆盖了从简单到困难的各种难度级别。Java 作为最常用的编程语言之一,在该项目中占据了重要地位。 ## 项目结构解析 ### 目录组织 doocs/leetcode 采用按题目编号分组的目录结构: ``` solution/ ├── 0...

gitblog_00555的博客 910

购物车智能检测系统:YOLO26 + PyQt5 毕设实现

YOLO26 + PyQt5 完成购物车商品检测系统:标注数据集(OpenImages 筛选 + 自制 500 张),训练 100 epoch 得到 mAP50 约 0.89,集成商品定价后输出总价。建议先用 OpenImages 预训练权重在自制数据上调优(冻住 backbone 前 50 epoch),等 loss 稳定后再解冻全量训练。

m0_64661770的博客 55

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

2024年Java最新LeetCode --- 经典算法题之二分查找三回合,Java常用算法手册

既已说到spring cloud alibaba,那对于整个微服务架构,如果想要进一步地向上提升自己,到底应该掌握哪些核心技能呢?就个人而言,对于整个微服务架构,像RPC、Dubbo、Spring Boot、Spring Cloud Alibaba、Docker、kubernetes、Spring Cloud Netflix、Service Mesh等这些都是最最核心的知识,架构师必经之路!下图,是自绘的微服务架构路线体系大纲,如果有还不知道自己该掌握些啥技术的朋友,可根据小编手绘的大纲进行一个参考。

2401_84584324的博客 1028

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

10大经典算法题解与面试实战技巧

算法作为计算机科学的核心基础,通过分治、动态规划等思想解决复杂问题。快速排序和二分查找展示了如何用O(nlogn)和O(logn)时间复杂度高效处理数据,而背包问题则体现了动态规划的空间优化技巧。在工程实践中,哈希表优化能将两数之和问题从O(n²)降至O(n),斐波那契数列的迭代解法实现了O(1)空间复杂度。这些算法在面试题库和实际项目中广泛应用,如推荐系统的协同过滤、游戏开发的A*寻路等场景。本文通过LeetCode高频真题,详解时间复杂度分析和多语言实现,帮助开发者掌握算法优化方法与面试解题框架。

weixin_32306957的博客 315

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

终极LeetCode算法指南:151道经典题解完整汇总,助你轻松攻克数论难题

GitHub加速计划/leet/leetcode项目是一个全面的LeetCode题解资源库,包含151道完整题解,特别聚焦于数论算法领域。无论你是编程新手还是有一定经验的开发者,这个项目都能为你提供清晰易懂的解题思路和方法,帮助你快速提升算法能力。 ## 📚 项目核心内容概览 该项目主要分为C++和Java两个版本的题解,其中C++版本包含了丰富的图文解析和算法实现。项目结构清晰,便于用户查

gitblog_01078的博客 458

截止到 2019 年 6 月 14 日在 LeetCode 中文版上写的题解

编号 题目地址 题解 有图解 阅读过百 精选题解 其它 1 LeetCode 第 287 题:寻找重复数 桶排序 + 二分法(Python 代码、Java 代码) 是 是 2 LeetCode 第 452 题:用最少数量的箭引爆气球 贪心算法(Python 代码、Java 代码) 是 是 3 LeetCode 第 300 题:最长上升子序列 动态规划 + 贪心算法(...

李威威的博客 690

傻瓜版leetcode hot100 简单题20道(含python/java/golang/c/c++题解)

的输入如下(你设计的程序。

2202_75353059的博客 654

经典算法大全51例——4.三色旗

经典算法大全51例——4.三色旗算法目录合集地址说明题目原理分析思路一——纵向寻踪思路二——横向寻踪代码实现——Java方式一——纵向寻踪方式二——横向寻踪相关题目其他变形:1.杨辉三角(来源:力扣LeetCode)2.弹球问题3.路径问题官方题解代码——C语言拓展杨辉三角与斐波那契数列杨辉三角与等差数列 算法目录合集 地址    算法目录合集 说明   该地址指向所有由本人自己所经历的算法习题(也有可能仅仅是一个入门的案例或者是经典案例),仅仅为我做过而且比较有意思的,也许还会有一些我自己想出来的,出于兴

g55zhw93的博客 3109

25道经典Java算法题

即使做web开发,也会遇到各种各种需要解决的算法问题,本文节选部分经典练手算法,并提供相关参考答案,希望对你有所帮助【程序1】题目:古典问题:有一对兔子,从出生后第3个月...

java面试笔试 394

[剑指Offer] - Java完整题解

写在前面 本文题目顺序为牛客网剑指 Offer 通过率降序,也算是一种从易到难。 牛客网剑指Offer 详细题解 剑指Offer 具体题解发布在个人网站,更新ing 1. 二维数组中的查找 2. 替换空格 3. 从尾到头打印链表 4. 两个栈实现队列 5. 旋转数组的最小数字 6. 斐波那契数列 7. 跳台阶 8. 变态跳台阶 9.二叉树深度 10.不使用加减乘除做加法 11. 镜像二叉树...

liyifan687的博客 833

3道真题训练|学会链表的前世今生

Java基础学习主要以练习为主,很多朋友听完视频课程学会基础以后感觉对练手项目无从下手,这里推荐去牛客网看看,这里的IT题库内容很丰富,属于国内做的很好的IT学习网站,而且是课程+刷题+面经+求职+讨论区分享。从基础开始练习,知识点编排详细,题目安排合理,题目表述以指导的形式进行。整个题单覆盖了java入门的全部知识点以及全部语法,通过知识点分类逐层递进,从基础开始到最后的实践任务,都会非常详细地指导你应该使用什么函数,应该怎么输入输出。

zhangxia_的博客 982
上一篇: Java数据结构之二叉树及其源码实现
下一篇: RabbitMQ及工作模式详解,包含docker部署
一个没有梦想的程序员
博客等级 码龄7年 20粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值