import java.util.Arrays;
/**
* 二分查找,在有序数组中找到小于等于num最右的位置
*/
public class Code03_BSNearRight {
public static void main(String[] args) {
int maxLen = 50;
int maxValue = 100;
int testTime = 100000;
for (int i = 0; i < testTime; i++) {
int[] arr = lenRandomValueRandom(maxLen, maxValue);
int value = (int) ((maxValue + 1) * Math.random()) - (int) (maxValue * Math.random());
Arrays.sort(arr);
if(test(arr,value) != find(arr,value)) {
System.out.println("出错了!");
printArray(arr);
}
}
}
public static void printArray(int[] arr) {
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
}
public static int test(int[] arr, int findValue) {
for (int i = arr.length - 1; i >= 0; i--) {
if(arr[i] <= findValue) {
return i;
}
}
return -1;
}
public static int find(int[] arr, int findValue) {
if(arr == null || arr.length == 0) {
return -1;
}
int L = 0;
int R = arr.length - 1;
int t = -1;
while (L <= R){
int mid = (L+R)/2;
if(arr[mid] <= findValue) {
t = mid;
L = mid + 1;
} else {
R = mid - 1;
}
}
return t;
}
// 返回一个数组arr,arr长度[0,maxLen-1],arr中的每个值[0,maxValue-1]
public static int[] lenRandomValueRandom(int maxLen, int maxValue) {
int len = (int) (Math.random() * maxLen);
int[] arr = new int[len];
for (int i = 0; i < len; i++) {
int value = (int) (Math.random() * maxValue);
arr[i] = value;
}
return arr;
}
}
相关推荐
acwing算法基础课文字版(看不懂你打我)——第一课基础算法之:二分查找(整数二分)
写在前面:acwing是由北大学长创立的算法学习平台,在IT资源良莠不齐的当下异军突起。只需一顿火锅钱,就能跟着获得noi金牌的北大学长学习算法,是IT初学者进行深入研究的不二平台。本系列帖子将围绕AcWing平台的主打课程——算法基础课,并辅以本人自己的学习心得与广大算法爱好者分享知识。如果觉得本篇内容对你有帮助的话,希望不吝点赞。若有不同看法的话欢迎在评论区友善探讨。下面附上AcWing平台的地址,强烈推荐大家去学习视频课程哦!!! 链接:https://www.acwing.com/activity/
【算法基础】二分查找
之前去华为的面试,一上来问了些项目的东西,因为对项目比较了解,没有什么问题,后来让写个二分查找,可能稍微有点紧张,表示竟然一时半会没想出来怎么写,纠结了半天,到底是用递归还是基本用法,后来还是写出来了,虽然用的是基本算法,回来后我觉得还是有必要记录一下,突然觉得自己的基础还是不够牢靠啊。。 package binsearch; public class BinSearch { /**
用Python实现基础版二分查找算法
然后,进入while循环,每次计算中间点mid的下标,并按照目标值与中间值的大小关系缩小查找范围。二分查找是一种在有序数组中查找特定元素的搜索算法,其思路是每次将待查找的序列分成两部分,判断目标元素在哪一部分中,并且对应地继续查找。首先,定义了一个升序排列的列表arr,和目标元素target为3,程序输出为1。然后,再定义一个升序排列的列表arr,和目标元素target为1,程序输出为None。首先,需要定义一个函数,输入为有序列表和目标元素,输出为该元素在列表中的位置(下标)或者None。
算法基础1 #简单查找 #二分查找 #递归
算法基础一一、一些概念1、算法是什么2、递归3、大O表示法二、简单查找与二分查找1、简单查找2、二分查找3、代码三、旅行商四、几种常用数据结构1、什么是内存2、什么是数组3、数组的优缺点4、什么是链表5、链表的优缺点6、什么是字典7、三种数据结构的运行时间8、什么是栈9、什么是队列10、什么是双端队列11、什么是元组五、选择排序1、选择排序2、代码 一、一些概念 注意:后面出现log,都是以2为底...
基于 Quest 摄像头数据开发的原理介绍【Unity Meta Quest MR 开发教程】
比如想在识别到的现实物体上叠加虚拟物体,需要知道这个现实物体在 Unity 的世界坐标下的哪个位置,是带有 x,y,z 三个轴的数据的。而 WebCamTexture 捕捉到的图像只是个 2D 的平面,没有三维世界的深度信息,我们通过物体识别算法识别到的物体坐标只是在这个 2D 平面上的一个屏幕坐标,可以理解为 Quest 拍摄了一张照片,我们识别到这张照片上的某个像素点为需要识别的现实物体的中心。是不是看起来比较复杂?Quest 的相机访问功能是在安卓的。
高速数字信号硬件设计:灵巧手方向核心技能与实战解析
在机器人产业加速演进的今天,灵巧手等高自由度末端执行器对硬件电路设计提出了更高要求。传统硬件工程师熟悉功能、功耗与EMC,而灵巧手设计还需在极小空间内融合多路电机驱动、高速数字接口与微弱模拟信号采集。信号完整性与电源完整性成为决定系统稳定性的关键:信号上升沿决定有效带宽,阻抗匹配、回流路径和去耦策略直接影响通信质量与抗干扰能力。从阻抗计算、等长设计到FPC布线,再到电源预算与纹波抑制,这些高速数字信号设计基础原理不仅适用于服务器主板,更是灵巧手控制器开发与调试的必修课。本文面向从事机器人硬件、嵌入式系统与电
< 算法基础 之 二分查找 >
在开发中,我们常常会需要查找某个顺序存储结构中的内容时,我们常常会直接使用Javascript中已经封装好的函数去查找或者辅助查找。但是也由于封装的特性,我们对这种封装好的函数,比较难以控制其复杂度,包括其内部执行语句的庸余部分难以把控。所以,在算法中,诞生了二分查找这个算法概念。二分查找(Binary Search)也叫作折半查找。二分查找有两个要求,一个是数列有序,另一个是数列使用顺序存储结构(比如数组)。
Java算法——基础二分查找
给定一个有n个元素An,在其中查找目标值T。
QGIS中高效处理CAD数据的两种实用技巧
本文详细解析了在QGIS中高效处理CAD数据的两种核心方法。针对DWG/DXF文件在QGIS中直接打开失败的问题,介绍了使用QGIS内置数据导入管理器进行标准化转换的流程,并重点推荐了功能更强大的Another DXF Importer插件,以更好地保留文字、块属性等复杂信息。文章对比了两种方法的优劣与适用场景,并提供了坐标系设置、中文乱码等常见问题的避坑指南,帮助用户根据数据需求选择最佳导入策略。
避坑指南:SAP CO模块维护成本控制范围的5个常见错误及解决方法
本文深入剖析了SAP CO模块中维护成本控制范围时最易犯的5个常见错误,包括货币参数配置不当、标准层次结构缺失、财政年度变式不一致、功能激活遗漏及集成参数设置错误。重点针对事务码OKKP的配置,提供了详细的排查步骤与实战解决方案,帮助顾问有效规避陷阱,确保成本核算体系稳定运行。
python基础一 day17 二分查找算法
# 什么叫算法# 计算的方法 : 人脑复杂 计算机简单 # 99 * 13 = 1287 = 13*100 - 13# 查找 : 找数据# 排序 :# 最短路径 # 我们学习的算法 都是过去时# 了解基础的算法 才能创造出更好的算法# 不是所有的事情都能套用现成的方法解决的# 有些时候会用到学过的算法知识来解决新的问题 # 二分查找算法 必须处理有序的列表# l = [2,3...
Android 12 系统横屏时,开机动画有两秒显示不全
平板系统默认横屏时,开机会旋转90度,显示的分辨率WxH,会变成HxW.但又会很快被SurfaceFlinger的SurfaceFlinger::processDisplayChanged 娇正。所以为了保险,可以在开机动画没结束之前,禁止旋转事件。在Android 12 产品定制化开发中,由于系统默认方向为竖屏,平板电脑要横屏显示。系统在开机时,有时因为旋转,会出现动画只显示一部分。
【基础算法总结】二分查找
二分查找算法是一种十分经典,十分基础的算法。细节最多,最容易写出死循环,但是真正掌握之后,又是最简单的算法。相信大家在之前一定听过"二分查找只用于数组有序的情况下这种说法,其实这是不准确的!!!它的本质是:数据具有二段性。应用场景准确的说是:当数组里的一个数和目标数比较之后,划分出了两段区域(此时具有"二段性"),通过某种规律可以直接舍弃一段区域,在另一段区域查找,周而复始这个操作,直到找到目标数。本篇文章将通过若干道题目进行验证。
基于深度学习YOLOv8的商品识别系统(深度学习 + UI界面 + 训练数据集 + Python代码)
如果使用自定义数据集,可以通过图像标注工具如LabelImg来标注每个商品的类别和边界框,并保存为YOLO格式的文本文件。bash复制编辑/dataset/images/train/val/labels/train/val这样,我们就准备好了数据集,可以开始训练YOLOv8模型。本文介绍了如何使用YOLOv8构建一个商品识别系统,包括从数据准备到模型训练,再到UI界面的开发。通过深度学习技术,尤其是YOLOv8的高效目标检测能力,我们能够快速实现商品识别并集成到实际应用中。
基于AnimeGAN模型生成宫崎骏风格动漫照片
用于动画风格纹理和线条转换的灰度样式丢失;新颖的颜色重建损失,以保留内容图像的颜色;新的灰度对抗损失防止生成的图像从显示为灰度图像;使用深度可分卷积和反向残块的轻量级生成器,以实现更快的传输。实验表明,AnimeGAN可以对真实世界的照片进行变换场景动画风格的图像与高质量的动画视觉效果和显著优于最先进的风格化方法。# 生成宫崎骏风格图片 model = hub . Module('animegan_v1_hayao_60' , use_gpu = True)images:输入的图片数据。
【二分查找】Java实现二分查找算法(基础版、改进版、平衡版、Java版、Leftmost、Ringhtmost)
java实现二分查找算法
WINCC7.3破解文件
WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!
python二分查找基础_python基础一 day17 二分查找算法
# 什么叫算法# 计算的方法 : 人脑复杂 计算机简单# 99 * 13 = 1287 = 13*100 - 13# 查找 : 找数据# 排序 :# 最短路径# 我们学习的算法 都是过去时# 了解基础的算法 才能创造出更好的算法# 不是所有的事情都能套用现成的方法解决的# 有些时候会用到学过的算法知识来解决新的问题# 二分查找算法 必须处理有序的列表# l = [2,3,5,10,15,16,...
jdk-8u144-linux-x64.tar.gz.
该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包
C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片
基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正
[算法基础] 二分查找
二分查找的原理 二分查找所应用的对象要求是有序的。 比如对一个按升序排好的数组,在其中查找给定值的元素。 查找时每次取正中位置mid = ( low + (high-low) / 2 ), 如果该元素即为所找元素,则查找结束; 如果该元素比所找元素大,则说明该元素右边的元素也必然比所找元素大,所以该元素右边的元素即数组右半部分可以舍去,此时令high = mid - 1。重置查找区间,进行下一趟查...
假人有限元模型
假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用
【基础算法-1】二分查找
当然啦,Java中数组自带 binarySearch(Object[], Object key)以下最左查找/最右查找表示对应查找范围的索引。,如果找到就返回下标,找不到则返回。low在右移过程中会越过最后一个。我们可以进一步改进代码,使得。2.求前任元素:最左查找 -1。3.求后任元素:最右查找 +1。在Type1中,如果要查找的。1.求排名:最左查找 + 1。元素,所以索引为low-1。范围内的元素:最左查找(
【从零开始学算法】第一期·基础算数与二分查找
本系列是博主自己学习算法知识的笔记。博主会尽最大可能把复杂的问题算法问题讲的通俗易懂,既为看官,也为自己,虽学无止境,望精益求精。
【基础算法总结】二分查找一
二分查找
【算法基础1】舍友课间上了个厕所,回来就告诉我他掌握了二分查找【内附搜索模板】
⭐️引言⭐️ 大家好,我是执梗。前两天写了篇关于蓝桥杯的文章,收到了很多兄弟们的反响。如果还有想参加蓝桥杯兄弟们没有看过的一定要看看哈——蓝桥杯。关于兄弟们的许多问题我都有看,为了帮助兄弟们,准备搞个算法系列,今天先说说二分查找,希望大家多多支持。 ????博客首页:执梗的博客 ????欢迎关注????点赞????收藏⭐️留言???? ❤️ :热爱Java学习,期待一起交流! ????作者水平很有限,如果发现错误,求告知,多谢! ????有问题可私信交流!!! ⭐️小剧场⭐️
【基础算法总结】二分查找二
二分查找
【基础算法】二分查找算法
二分算法模板总结
java 二分查找 简书_Java基础算法:堆排,快排,二分查找
Java基础算法:堆排,快排,二分查找1. 堆排满二叉树:所有叶结点都有同样的深度,每个内部结点都有两个儿子完全二叉树:若二叉树的高度为h,除第h层外,其他各层(1 ~ h -1)的结点数都达到了最大个数,第h层从右向左连续若干结点;也就是说一个结点有右结点,也一定有左结点满二叉树是一种特殊的完全二叉树,满二叉树一定是完全二叉树,但完全二叉树不一定是满二叉树代码:public class Heap...
1503



被折叠的 条评论
为什么被折叠?



