7.5 java基础知识补充(五)二分法查找

基于BFQ19S的共射振荡器设计(克拉泼电容三点式) 根据理论,设计出如下LC振荡器: 一、设计初期是使用= 400Mhz作为目标值计算的, 但由于计算值与实际值有差别,所以使用计算值附近的元器件代替使用;最终该电路的L1=82nH , D1 = 5.6pF, C11=18pF, C12 = 18pF ; 另外R3= 600Ω, R4取27k , C9取10pF; 该电路实际的震荡频率为主要为L1,D1 决定,所以其震荡频率约为 == 235Mhz; 二、由于实际得到的频率比目标频率低太多,所以调整电路使其能达到400M左... 阅读详情


二分法查找逻辑分析

二分法查找是在一组有序数据中寻找目标值,并获得目标值所在的下标位置。

二分法查找也叫折半查找,基本逻辑是每次都向中间位置找,然后缩小一半范围再向中间位置找,请看下面的示例:

a

查找结束时,低位下标和高位下标可以重叠,请看下面的演示:
a

如果低位下标和高位下标交叉,则说明查找的目标值不存在。最终 lo 下标值则是目标值应插入的位置:

a

代码

package demo1;

import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;

public class BinarySearch {
    public static void main(String[] args) {
        int[] a = rnd();
        Arrays.sort(a);
        System.out.println(Arrays.toString(a));
        System.out.print("请输入查找的目标值:");
        int t = new Scanner(System.in).nextInt();

        int index = binarySearch(a, t);
        if (index < 0) {
            System.out.println("找不到目标值");
        } else {
            System.out.println(t+"所在的下标位置:"+index);
        }
    }

    private static int binarySearch(int[] a, int t) {
        int lo = 0;
        int hi = a.length-1;
        int mid;
        while (lo <= hi) {
            mid = (lo+hi) / 2;
            if (a[mid] < t) {
                lo = mid+1;
            } else if (a[mid] > t) {
                hi = mid-1;
            } else {
                return mid;
            }
        }

        return -(lo+1);
    }

    static int[] rnd() {
        int[] a = new int[5 + new Random().nextInt(6)];

        for (int i = 0; i < a.length; i++) {
            a[i] = new Random().nextInt(100);
        }

        return a;
    }
}
解锁Jetbrains AI助手:中国开发者实战配置与效率跃迁指南 本文为中国开发者提供了一份详细的Jetbrains AI助手实战配置指南。针对服务地域限制,核心解决方案是通过修改Jetbrains账户区域信息并配置网络代理,实现插件的稳定启用。文章进一步分享了AI助手在解读遗留代码、生成中文提交信息、智能问答等场景下的具体应用,旨在帮助开发者深度集成这一工具,实现编码生产力的显著提升。 阅读详情

相关推荐

视觉惯性SLAM系列——ORB-SLAM3的整体介绍及各个线程的功能(五)

跟踪线程(Tracking Thread)作用:负责处理每一帧图像,进行相机位姿的估计和定位。它首先执行与前一帧图像的特征匹配,然后通过仅运动(motion-only)BA(Bundle Adjustment)优化位姿。如果跟踪失败,它会尝试在所有地图中进行重定位。此外,跟踪线程还负责决定何时插入新的关键帧,以及何时将关键帧从局部地图中移除。详细介绍见局部建图线程(Local Mapping Thread)作用:管理局部地图,向活跃地图添加关键帧和点,移除多余的关键帧和点。

曾经也曾立志 998

Java中数组二分法查找

算法:当数组的数据量很大适宜采用该方法。采用二分法查找时,数据需是有序不重复的,如果是无序的也可通过选择排序、冒泡排序等数组排序方法进行排序之后,就可以使用二分法查找。 基本思想:假设数据是按升序排序的,对于给定值 x,从序列的中间位置开始比较,如果当前位置值等于 x,则查找成功;若 x 小于当前位置值,则在数列的前半段中查找;若 x 大于当前位置值则在数列的后半段中继续查找,直到找到为止,但是如...

南 墙 1万+

两个独立的正态分布的和仍然为正态分布的证明

正态分布的和

weixin_40064300的博客 1万+

二分法查找的java实现

算法 .二分法 二分法也就是折半查找,在 有序 的数列中查找指定的元素,设定最小索引(low)和最大索引(height-1)还有中间值mid((low+height-1)/2),这种查找,如果中间值比指定元素小让low=mid+1,如果中间值比指定元素大,让height=mid-1; 以上是大体思路,下面展示两个动图,帮助理解...

yjyxw的博客 906

易灵思Trion FPGA实战:5分钟搞定MIPI硬核配置(附Interface Designer避坑指南)

本文详细介绍了易灵思Trion FPGA中MIPI硬核的快速配置方法,通过Interface Designer工具实现从时钟配置到数据收发的全流程实战。特别针对初次接触Trion系列的设计师,提供了六个关键配置陷阱及解决方案,帮助开发者高效完成嵌入式视觉和高速数据传输项目。

eee77的博客 778

手把手教你用QEMU虚拟化华为路由器固件(附完整网络配置指南)

本文提供了一份详尽的QEMU虚拟化华为路由器固件的实战指南。从固件解包、网络桥接配置到QEMU虚拟机启动,手把手教你搭建完整的嵌入式设备沙箱环境,特别适合安全研究、逆向分析和学习嵌入式系统工作原理。

tgb3456789的博客 933

java的二分法查找

java的二分法查找

kerryqpw的博客 760

Simulink封装与库的建立

第二栏设置标签,第三栏是对应变量名,即是第一张图中的常量名。1.先将输入与常量模块相连接并生成子系统。按照如图所示添加修改,最后的效果如下图。封装子系统搭建测试环境。

lensyu1994的博客 1734

算法(Java)——二分法查找

在排序数组中,二分法查找是一种高效率方法。

小朱小朱绝不认输的博客 6063

OpenClaw 报错 npm install failed; cleaning up and retrying...:原生模块编译失败

本文针对OpenClaw项目在部署时出现的"npm install failed"报错问题进行分析,指出该问题源于Node.js原生模块编译链缺失。文章详细列举了常见触发原因,包括缺少gcc/make、Python版本不符、Node版本过新等,并提供了五种解决方案:安装完整编译环境、配置node-gyp Python、重新编译原生模块、切换Node版本以及单独重建失败模块。最后强调在国产服务器环境下部署AI工程时,补齐编译环境和使用稳定Node版本是解决问题的关键,该方案可复用解决

博客 1788

[HQChart教程] 去掉“仅学习使用”文字提示的小技巧

最近用 HQChart 做图表时,发现左下角有“仅学习使用”的字样。这种水印虽然是默认的,但如果要展示给客户,可能会显得不够专业。还好,这个问题很好解决,只需要简单修改一下配置。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 586

java利用二分法进行排序

二分法排序 二分法排序是直接插入排序的改进版本,直接插入排序插入到前方集合中时采用的方式是逐个比较,二分法则是采用二分比较,与直接排序算法最大的区别在于查找插入位置时使用的是二分查找的方式,在速度上有一定提升。 1、算法思想 总共有N个元素,当插入第i个元素时,对前面的0~i-1个元素进行折半,先跟他们中间的那个元素比,如果小,那么再对前一半的元素进行折半,否则对后一半的元素进行折半,知道左<右,然后再把第i个元素前一位于目标位置之间的所有元素后移,再把第i个元素放在目标位置上。 举例: 例如有个

EatingSoilLang 5383

【人工智能】提示词工程:让大模型精准响应的核心技术,提示词的基础框架 以及 常见提示词框架及场景

编写提示词的基础原则包括:简单、明确、详细,提示词拥有零样本提示、少样本提示、分配角色、提示写作风格、限定输出格式等技巧。

奶爸的编程之路,也就一周冷个三天 1128

二分法查找

详解二分法查找 ​ 首先,我们要明白二分法查找适用于一个有序的数组,在java的学习中,我们一般会先接触冒泡排序,使用冒泡排序对无序数组进行排序后再用二分查找去搜索目标数. 二分法查找原理 ​ 针对一个有序数组,当我们需要搜索某一个目标数时,我可以一个一个进行遍历搜索,但是,这样会浪费太多计算机资源,并且效率较低,因此,我们需要一个更加高效的方式进行搜索. ​ 二分法查找是指将目标数与有序数组的中...

Sign_L的博客 816

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

算法 - 二分法查找

什么是二分法查找免费小说网站 https://www.kuwx.net/ 二分法查找主要是为了快速查找给定数组内,期待值在数组中的位置(下标) 二分法查找通过对整个数组取中间值,判断期待值所在的范围并缩小范围,每次查找范围折半,直到范围的边界重合,得出期待值的位置,如果找不到返回null 二分法有一个先决条件是:数组内元素必须是有序的 简单图解 给定一个包含1,3,5,7,8,9这一个元...

代码小牛的博客 891

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

最简单的二分法查找数java_算法 - 二分法查找

什么是二分法查找二分法查找主要是为了快速查找给定数组内,期待值在数组中的位置(下标)二分法查找通过对整个数组取中间值,判断期待值所在的范围并缩小范围,每次查找范围折半,直到范围的边界重合,得出期待值的位置,如果找不到返回null二分法有一个先决条件是:数组内元素必须是有序的简单图解给定一个包含1,3,5,7,8,9这一个元素的有序数组,求得期待值7所在的位置,下边用绿块表示指针所在位置若是按照直接...

weixin_36259939的博客 495

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Java如何实现二分法查找

二分法查找 package com.epoch.createcarnumber.utils; import java.util.Arrays; import java.util.Random; import java.util.Scanner; public class Dichotomy { private static int[] random() { int ...

Welcome to loveuui's blog 233

java二分法_详解

二分法-详解 二分法原理 二分法的前提是 有序 比如 我们有一个数组{1,2,3,4,5,6,7,8.9} 我们要找 8; 有什么思路呢?for 循环 然后一个个比较?虽然说这样也行 但是当我们这个数组特别大的时候代码执行的时间就会特别长 所以就有了二分的思想 我们先拿8和我数组中间的数比较 也就是和5比较 8比5大 也就是说在整个数组中5之前都不可能有8(这也就是为什么二分法实现前提的一定是有序...

Java_布丁 5452

java二分法查找_java实现二分法查找

什么是二分法查找:二分法也就是折半查找,在有序的数列中查找指定的元素,设定最小索引(low)和最大索引(height-1)还有中间值mid((low+height-1)/2),这种查找,如果中间值比指定元素小让low=mid+1,如果中间值比指定元素大,让height=mid-1;代码实现:(免费视频教程分享:java视频教程)import java.util.ArrayList;import j...

weixin_36337548的博客 246

java二分法查找比较时间_java实现二分法查找

什么是二分法查找:二分法也就是折半查找,在有序的数列中查找指定的元素,设定最小索引(low)和最大索引(height-1)还有中间值mid((low+height-1)/2),这种查找,如果中间值比指定元素小让low=mid+1,如果中间值比指定元素大,让height=mid-1;代码实现:(免费视频教程分享:java视频教程)import java.util.ArrayList;import j...

weixin_42403771的博客 301

【JAVA基础】【算法】冒泡排序_优化排序,二分法查找_折半检索

Java基础–基本算法 JAVA主要作为一个后端语言,对逻辑和基本算法的要求是明显高于前端程序员的(个人认为),所以大家平常逻辑性不太好的就需要多多复习和学习来提高自己的水平。 1.冒泡排序(优化排序) 冒泡排序是最常用的排序算法,再笔试中也非常常见,能手写出冒泡排序可以说是基本的素养。 算法重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来,这样越大的元素会经由交...

GengMS的博客 2万+

java 二分法

java 二分法 二分法查找数据,就是每次都和中间数据比较,只走一边,极大的提高了查找数据的效率。 int[] arr = { 1, 2, 2, 4, 7, 9, 3, 2, 2, 5, 845, 23, 1, 78, 4, 5 }; int number = 2; // 要进行二分法必须先进行排序 // 排序也有讲究,徐看你是顺序还是逆序 // 顺序的话,由小到大,中间的判断要注意,输入查找的数据与每次的中间数值比较时 // 大于中间数值就网右走,小于中间数值往左走 ord

qq_49249150的博客 1167

二分法查找和普通查找

一、普通查找   对于数组和一个需要查找的元素来说,普通查找的原理很简单,即为从数组的第一个元素到最后一个元素进行遍历,如果第i个元素的值等于我们需要查找的值,那么返回找到的角标i,否则返回-1表示没有查找到。这里以java为例,普通查找代码如下: 1 package Daily_practice; 2 3 public class Array_Search { 4

yhb_shmily的博客 428

二分法查找数组元素(java代码)

二分法查找数组元素 要求:数组元素必须有序,从大到小排列,或从小到大按一定的规律进行排列。 利用二分法进行查找。 分析: 这个数组是从小到大进行排列的。数组长度是7,因此所引致的范围是【0,6】。首先将目标与索引值为3的元素进行比较,这里假设aim=20;a[3]=75>aim,按照数组的排列顺序,可以知道,aim应该在索引3的右侧,并且,索引为3的元素并不是我们要找的aim,因此,我们将范围改为【3+1,6】,此时,中间索引为5,然后再将索引为5的元素与aim比较,a[5]=3<aim=2

qq_46159283的博客 963

Java算法----二分法

二分法又称折半查找法,它的基本原理是通过不断地比较目标元素与当前数组的中间值来更新左右界限,当找到目标元素或左边界与右边界重合时停止搜索。

weixin_74787572的博客 1704
上一篇: 7.4 java基础知识补充(四)选择排序
下一篇: 7.6 java基础知识补充(六)递归
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值