import java.util.Arrays;
/**
* 二分查找
*/
public class Code01_BSExist {
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 Boolean test(int[] arr, int findValue) {
for (int i = 0; i < arr.length; i++) {
if(arr[i] == findValue) {
return true;
}
}
return false;
}
public static Boolean find(int[] arr, int findValue) {
if(arr == null || arr.length == 0) {
return false;
}
int L = 0;
int R = arr.length - 1;
while (L <= R){
int mid = (L+R)/2;
if(arr[mid] == findValue) {
return true;
} else if(arr[mid] < findValue) {
L = mid + 1;
} else if(arr[mid] > findValue) {
R = mid - 1;
}
}
return false;
}
// 返回一个数组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/
算法基础1 #简单查找 #二分查找 #递归
算法基础一一、一些概念1、算法是什么2、递归3、大O表示法二、简单查找与二分查找1、简单查找2、二分查找3、代码三、旅行商四、几种常用数据结构1、什么是内存2、什么是数组3、数组的优缺点4、什么是链表5、链表的优缺点6、什么是字典7、三种数据结构的运行时间8、什么是栈9、什么是队列10、什么是双端队列11、什么是元组五、选择排序1、选择排序2、代码 一、一些概念 注意:后面出现log,都是以2为底...
用Python实现基础版二分查找算法
然后,进入while循环,每次计算中间点mid的下标,并按照目标值与中间值的大小关系缩小查找范围。二分查找是一种在有序数组中查找特定元素的搜索算法,其思路是每次将待查找的序列分成两部分,判断目标元素在哪一部分中,并且对应地继续查找。首先,定义了一个升序排列的列表arr,和目标元素target为3,程序输出为1。然后,再定义一个升序排列的列表arr,和目标元素target为1,程序输出为None。首先,需要定义一个函数,输入为有序列表和目标元素,输出为该元素在列表中的位置(下标)或者None。
【算法基础】二分查找
之前去华为的面试,一上来问了些项目的东西,因为对项目比较了解,没有什么问题,后来让写个二分查找,可能稍微有点紧张,表示竟然一时半会没想出来怎么写,纠结了半天,到底是用递归还是基本用法,后来还是写出来了,虽然用的是基本算法,回来后我觉得还是有必要记录一下,突然觉得自己的基础还是不够牢靠啊。。 package binsearch; public class BinSearch { /**
手把手教你用ECharts打造炫酷3D饼图(附完整源码)
本文详细介绍了如何使用ECharts创建炫酷的3D饼图,从环境配置到完整源码实现,涵盖参数解析、视觉优化和交互增强技巧。通过实战案例,帮助开发者快速掌握3D数据可视化技术,提升数据展示效果。
Proteus仿真——电压比较器
电压比较器是一种对输入信号进行鉴别与比较的电路,是组成非正弦波发生电路的基本单元电路。常用电压比较器有如下几种:单限比较器、滞回比较器、窗口比较器、集成电压比较器等。
< 算法基础 之 二分查找 >
在开发中,我们常常会需要查找某个顺序存储结构中的内容时,我们常常会直接使用Javascript中已经封装好的函数去查找或者辅助查找。但是也由于封装的特性,我们对这种封装好的函数,比较难以控制其复杂度,包括其内部执行语句的庸余部分难以把控。所以,在算法中,诞生了二分查找这个算法概念。二分查找(Binary Search)也叫作折半查找。二分查找有两个要求,一个是数列有序,另一个是数列使用顺序存储结构(比如数组)。
MaxENT生态位模型实战:从数据准备到论文发表的完整指南
本文提供MaxENT生态位模型从数据准备到论文发表的完整实战指南,涵盖物种分布数据处理、环境变量筛选、参数优化及结果可视化等关键步骤。特别介绍如何通过R语言进行高级建模优化,提升模型AUC值,并分享海洋生物专题研究中的数据处理技巧。适合生态学研究者快速掌握这一强大的物种分布预测工具,产出高质量研究成果。
Java算法——基础二分查找
给定一个有n个元素An,在其中查找目标值T。
HP MSA 2050磁盘阵列配置步骤
一、盘阵与服务器直接连接 1.1 单控制器配置:一台服务器/ 一个 HBA/ 单路径 1.2 双控制器配置:两台服务器/ 每台服务器一个 HBA/ 双路径 二、通过交换机(一般光纤交换机) 2.1 双控制器配置:两台服务器/ 两台交换机 三、配置MSA2050 3.1在完成硬件安装后,可以访问控制器模块的基于 Web 的管理界面 SMU (存储 管理实用程序),以便监视和管理此存储系统。 首先...
虚幻商城 Quixel 免费资产一键入库
在免费领取所有Megascans之后,我们只是有了获取 Quixel Megascans 资产的资格,但是没有入 Fab 库,本文将讲解通过脚本将 Quixel 所有资产入库 Fab。
python基础一 day17 二分查找算法
# 什么叫算法# 计算的方法 : 人脑复杂 计算机简单 # 99 * 13 = 1287 = 13*100 - 13# 查找 : 找数据# 排序 :# 最短路径 # 我们学习的算法 都是过去时# 了解基础的算法 才能创造出更好的算法# 不是所有的事情都能套用现成的方法解决的# 有些时候会用到学过的算法知识来解决新的问题 # 二分查找算法 必须处理有序的列表# l = [2,3...
模型预测控制(MPC)算法介绍
模型预测控制(Model Predictive Control,MPC)是一种先进的控制策略,广泛应用于工业过程控制、机器人控制、电力系统等领域。它基于系统的模型,通过滚动优化来预测系统未来的行为,并据此确定当前的最优控制输入。
【基础算法总结】二分查找
二分查找算法是一种十分经典,十分基础的算法。细节最多,最容易写出死循环,但是真正掌握之后,又是最简单的算法。相信大家在之前一定听过"二分查找只用于数组有序的情况下这种说法,其实这是不准确的!!!它的本质是:数据具有二段性。应用场景准确的说是:当数组里的一个数和目标数比较之后,划分出了两段区域(此时具有"二段性"),通过某种规律可以直接舍弃一段区域,在另一段区域查找,周而复始这个操作,直到找到目标数。本篇文章将通过若干道题目进行验证。
【GEE数据库】WRF常用数据集总结
【GEE数据库】WRF常用数据集总结
电磁场仿真软件:COMSOL Multiphysics_(17).时域与频域分析
时域和频域分析是电磁场仿真中非常重要的两种方法,每种方法都有其独特的应用场景和优势。时域分析适用于瞬态响应和宽带信号的分析,而频域分析则适用于稳态响应和窄带信号的分析。在COMSOL Multiphysics中,通过合理设置物理场接口、材料属性、边界条件、网格划分和求解器,可以高效地进行这两种分析,并通过傅里叶变换将时域结果转换为频域结果,进一步拓展仿真应用的范围。合理的性能优化措施,如网格划分优化和并行计算,可以显著提高仿真的效率和准确性。
【二分查找】Java实现二分查找算法(基础版、改进版、平衡版、Java版、Leftmost、Ringhtmost)
java实现二分查找算法
老版QQ原生表情gif动态
这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。
[算法基础] 二分查找
二分查找的原理 二分查找所应用的对象要求是有序的。 比如对一个按升序排好的数组,在其中查找给定值的元素。 查找时每次取正中位置mid = ( low + (high-low) / 2 ), 如果该元素即为所找元素,则查找结束; 如果该元素比所找元素大,则说明该元素右边的元素也必然比所找元素大,所以该元素右边的元素即数组右半部分可以舍去,此时令high = mid - 1。重置查找区间,进行下一趟查...
Data-Structures-and-Algorithm-Analysis-in-Java.pdf
作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...
复分析 阿尔福斯(Ahlfors) 第三版答案 英文
答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案
【基础算法-1】二分查找
当然啦,Java中数组自带 binarySearch(Object[], Object key)以下最左查找/最右查找表示对应查找范围的索引。,如果找到就返回下标,找不到则返回。low在右移过程中会越过最后一个。我们可以进一步改进代码,使得。2.求前任元素:最左查找 -1。3.求后任元素:最右查找 +1。在Type1中,如果要查找的。1.求排名:最左查找 + 1。元素,所以索引为low-1。范围内的元素:最左查找(
Camera2Demo
在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作
python二分查找基础_python基础一 day17 二分查找算法
# 什么叫算法# 计算的方法 : 人脑复杂 计算机简单# 99 * 13 = 1287 = 13*100 - 13# 查找 : 找数据# 排序 :# 最短路径# 我们学习的算法 都是过去时# 了解基础的算法 才能创造出更好的算法# 不是所有的事情都能套用现成的方法解决的# 有些时候会用到学过的算法知识来解决新的问题# 二分查找算法 必须处理有序的列表# l = [2,3,5,10,15,16,...
【从零开始学算法】第一期·基础算数与二分查找
本系列是博主自己学习算法知识的笔记。博主会尽最大可能把复杂的问题算法问题讲的通俗易懂,既为看官,也为自己,虽学无止境,望精益求精。
【基础算法总结】二分查找一
二分查找
【算法基础1】舍友课间上了个厕所,回来就告诉我他掌握了二分查找【内附搜索模板】
⭐️引言⭐️ 大家好,我是执梗。前两天写了篇关于蓝桥杯的文章,收到了很多兄弟们的反响。如果还有想参加蓝桥杯兄弟们没有看过的一定要看看哈——蓝桥杯。关于兄弟们的许多问题我都有看,为了帮助兄弟们,准备搞个算法系列,今天先说说二分查找,希望大家多多支持。 ????博客首页:执梗的博客 ????欢迎关注????点赞????收藏⭐️留言???? ❤️ :热爱Java学习,期待一起交流! ????作者水平很有限,如果发现错误,求告知,多谢! ????有问题可私信交流!!! ⭐️小剧场⭐️
【基础算法总结】二分查找二
二分查找
【基础算法】二分查找算法
二分算法模板总结
java 二分查找 简书_Java基础算法:堆排,快排,二分查找
Java基础算法:堆排,快排,二分查找1. 堆排满二叉树:所有叶结点都有同样的深度,每个内部结点都有两个儿子完全二叉树:若二叉树的高度为h,除第h层外,其他各层(1 ~ h -1)的结点数都达到了最大个数,第h层从右向左连续若干结点;也就是说一个结点有右结点,也一定有左结点满二叉树是一种特殊的完全二叉树,满二叉树一定是完全二叉树,但完全二叉树不一定是满二叉树代码:public class Heap...
1503



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



