帝国生成网站地图微信网站开发系统

web/2025/10/5 7:28:51/文章来源:
帝国生成网站地图,微信网站开发系统,开发公司与城市资产经营公司合作协议,html模板免费十个网页本文主要梳理了二分查找算法的几种实现思路#xff0c;基本概念参考 顺序、二分、哈希查找的区别及联系_生成一个大小为10万的有序数组,随机查找一个元素,分别采用顺序查找和二分查找方式-CSDN博客 1、基本概念 #xff08;1#xff09;前提条件#xff1a;待查找数据必须…本文主要梳理了二分查找算法的几种实现思路基本概念参考 顺序、二分、哈希查找的区别及联系_生成一个大小为10万的有序数组,随机查找一个元素,分别采用顺序查找和二分查找方式-CSDN博客 1、基本概念 1前提条件待查找数据必须有序。 2实现方式在查找过程中它先和中间的比较如果等于就直接返回如果小于就在前半部分继续使用二分法进行查找如果大于则在后半部分继续使用二分法进行查找。 2、算法实现 2.1 基本版实现 package com.hh.algorithm.find;public class BinarySearch {public static void main(String[] args) {int[] arr {1,2,4,5,5,6,7,8,9,11,23};System.out.println(BinarySearch.binary(arr, 4));}public static int binary(int[] arr, int key) {int i 0;int j arr.length - 1;while (i j) {int mid (i j) 1;if (key arr[mid]) {j mid - 1;} else if (key arr[mid]) {i mid 1;} else {return mid;}}return -1;}}问题1为什么是 ij 而不是 ij 1ij意味着 ij 它们指向的元素也会参与比较 2ij只意味着mid 指向的元素参与比较。 问题2j - ((j - i) 1) 与 (ij)/2都是相加除2使用后者有没有问题 当超出 int 的范围时他会把最高位视为符号位。 代码实现 package com.hh.algorithm.find;public class BinarySearchTest {public static void main(String[] args) {/*同一个二进制数1011 1111 1111 1111 1111 1111 1111 1110没有超出int 范围默认是不把最高位视为符号位代表3221225470超出int 范围把最高位视为符号位代表-1073741826所以当计算结果超出int的范围时他就会把最高位视为符号位*/int i 0;int j Integer.MAX_VALUE - 1;int mid (j i) / 2;int mid2 (i j) 1;System.out.println(第1轮(j i) / 2 mid);System.out.println(第1轮(ji)/2 mid2);System.out.println(---------------------);i mid1;mid (j i) / 2;mid2 (i j) 1;System.out.println(第2轮(j i) / 2 mid);System.out.println(第2轮(ji)/2 mid2);/*扩展1(j i) / 2还有另一种写法也就是 j - (j - i) / 22j - (j - i) / 2 拆开就是 j - j/2 i/2 -- j/2 i/2 -- (j i) / 2*/} } 运行结果 2.2 平衡版实现 package com.hh.algorithm.find; /*// 如果待查找数字一直在左边if那么就会判断比较log(n)次if (key arr[mid]) {j mid - 1;} else if (key arr[mid]) {// 如果待查找数字一直在右边if那么就会判断比较2log(n)次i mid 1;} else {return mid;}解决方式1.左闭右开的区间i指向的可能是目标而j指向的不是目标2.不在循环内找出等范围内只剩i时退出循环在循环外比较 a[i]与target3.循环内的平均比较次数减少了4.时间复杂度 θ(log(n)) */ public class BinarySearch2 {public static void main(String[] args) {int[] arr {1,2,4,5,5,6,7,8,9,11,23};System.out.println(BinarySearch2.binary(arr, 4));}public static int binary(int[] arr, int key) {int i 0;int j arr.length;while (i 1 j) {int mid (i j) 1;if (key arr[mid]) {j mid;} else{i mid;}}return (key arr[i])? i : -1;}} 运行结果 2.3 java版实现 package com.hh.algorithm.find;/*** 下面是java版本的二分查找代码实现粘贴了底层代码*/ public class BinarySearch3 {public static void main(String[] args) {int[] arr {1,2,4,5,5,6,7,8,9,11,23};System.out.println(BinarySearch3.binarySearch(arr,4));}public static int binarySearch(int[] a, int key) {return binarySearch0(a, 0, a.length, key);}private static int binarySearch0(int[] a, int fromIndex, int toIndex,int key) {int low fromIndex;int high toIndex - 1;while (low high) {int mid (low high) 1;int midVal a[mid];if (midVal key)low mid 1;else if (midVal key)high mid - 1;elsereturn mid; // key found}//没找到就返回插入点位置return -(low 1); // key not found.} } 运行结果 2.4 有重复元素的数组返回左右 package com.hh.algorithm.find;/*** 当该数组有重复元素时返回最靠左右的元素位置*/ public class BinarySearchMost {public static void main(String[] args) {int[] arr {1,2,4,5,7,7,7,7,11,23};System.out.println(BinarySearchMost.binaryLeft(arr,7));System.out.println(BinarySearchMost.binaryRight(arr,7));}/*返回最靠左的元素索引*/public static int binaryLeft(int[] arr, int key) {int i 0;int j arr.length - 1;int candidate -1;while (i j) {int mid (i j) 1;if (key arr[mid]) {j mid - 1;} else if (key arr[mid]) {i mid 1;} else {candidate mid;j mid -1;}}return candidate;}/*返回最靠右的元素索引*/public static int binaryRight(int[] arr, int key) {int i 0;int j arr.length - 1;int candidate -1;while (i j) {int mid (i j) 1;if (key arr[mid]) {j mid - 1;} else if (key arr[mid]) {i mid 1;} else {candidate mid;i mid 1;}}return candidate;} } 运行结果 2.5 没找到返回有意义的值 package com.hh.algorithm.find;/*** 当该数组找不到该元素时返回大于小于等于目标的最靠左右的索引位置*/ public class BinarySearchMost2 {public static void main(String[] args) {int[] arr {1,2,4,5,7,7,7,7,11,23};System.out.println(BinarySearchMost2.binaryLeft(arr,3));System.out.println(BinarySearchMost2.binaryRight(arr,9));}/*返回大于目标的最靠左索引*/public static int binaryLeft(int[] arr, int key) {int i 0;int j arr.length - 1;while (i j) {int mid (i j) 1;if (key arr[mid]) {j mid - 1;} else{i mid 1;}}return i;}/*返回最小于目标的最靠右索引*/public static int binaryRight(int[] arr, int key) {int i 0;int j arr.length - 1;while (i j) {int mid (i j) 1;if (key arr[mid]) {j mid - 1;} else {i mid 1;}}return i-1;} } 运行结果 本文为学习笔记所参考文章均已附上链接若有疑问请私信 创作不易如果对你有点帮助的话麻烦点个赞支持一下 新手小白欢迎留言指正

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/87236.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

长沙好的网站建设品牌做pc端网站咨询

近期,有朋友在后台咨询我们:现有的以太网交换机坏了,能否用光纤收发器来替代?相信很多朋友都有过这样的疑问,答案肯定是否,我们不建议大家用光纤收发器替代以太网交换机来使用!因为以太网交换机…

静态网站html模板下载企业门户网站开发代码

0. 使用DiskGenius克隆硬盘副本。可能用于备份,可能用于换硬盘类型,也可能是硬盘整体扩容。DiskGenius可以方便的通过克隆硬盘来实现硬盘分区扩容。硬盘整体空间增大,每个分区大小也可以调整并增大。 1. 进入PE系统,使用EasyUEFI…

做简历的网站叫什么个人网页制作成品源代码

要求素数,首先我们要知道什么是素数,在解题的时候,不要急着去寻找方法解题,而是要先了解它的根本,才可以在遇到类似题的时候轻松面对解决质数(prime number)又称素数,有无限个。一个大于1的自然数&#xff…

简述上课网站建设所用的技术架构app如何推广以及推广渠道

在自然语言处理领域,有一个常见且重要的任务就是文本相似度搜索。文本相似度搜索是指根据用户输入的一段文本,从数据库中找出与之最相似或最相关的一段或多段文本。它可以应用在很多场景中,例如问答系统、推荐系统、搜索引擎等。 比如&#…

做宣传网站需要多少钱wordpress 文章付费查看

如果你知道如何使用 C/C Single File Execution 插件但仍然无法找到运行按钮 请直接看第五张图片 一、 这里我首先新建了一个项目,名为Demo 又在项目文件夹内新建了一个代码文件,名为TestCode 二、 然后在 File - Settings - Plugins 中搜索 C/C Single…

泰安集团网站建设报价文化馆门户网站建设的作用及意义

Vue 2和Vue 3是Vue.js框架的不同版本,在面试中经常涉及到它们之间的区别。以下是Vue 2和Vue 3的主要区别: 性能提升:Vue 3在性能方面进行了优化。Vue 3引入了更高效的Diff算法,提高了渲染性能。此外,Vue 3还进行了代码…

谷歌网站英文做家旅游的视频网站好

思路:先对数组排序,然后确定第一个数nums[i],再新建左右双指针; 寻找的3元组,a,b,c,即是 nums[i], nums[letf], nums[right] 数组1:-1,-1,-1,0,1,2; 前面3个-1,只有一个-1是有用的,需…

网站免费部署wordpress主题模板 国人

2024数字物流技术展 2024新能源商用车及物流车展 2024电商物流包装展 2024冷链物流展 2024年7月8-10日 | 杭州国际博览中心 参展企业介绍 深圳市欣瑞达信息技术有限公司(曾用名:深圳市欣瑞达液晶显示技术有限公司)成立于1997年,是…

网站建设公司宣传河南省建设监理协会官方网站

使用 Docker Registry 搭建自己的 Docker 镜像仓库 在使用 Docker 进行应用程序的开发和部署时,使用 Docker 镜像仓库是一个很好的实践。它允许集中存储和管理 Docker 镜像,方便团队协作和版本控制。在本文中,将介绍如何使用 Docker Registr…

域名注册网站大全手机做任务的网站有哪些

文章目录 需求问题解决方案示例代码 需求 项目中共用了一个redis,而项目中部分代码使用了JetCache的Cached注解。所以需要给Cached动态配置area属性值,用来区分dev和test环境。 问题 自定义注解的属性值需要常量值,即static final修饰&…

个人网站平台十大企业网站排行榜

本文主要向大家介绍了Python语言解析JSON详解,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助。 JSON 函数使用 JSON 函数需要导入 json 库:import json。函数 描述json.dumps 将 Python 对象编码成 JSON 字符串json.loads 将已…

建站如何挣钱安阳信息港网站

java minor gc2013年,Oracle宣布了Java SE –更改版本编号方案 。 该公告指出,将使用特定的版本号方案发布受限更新版本(那些“包括新功能和非安全修复程序”)和关键补丁更新(CPU)“那些仅包含安全漏洞修复…

富阳房产网佛山seo按效果付费

1,生成改为Release版本 2,选中****.Android项目 3,点击生成,选择存档 4,点击分发 5,选择临时 6,添加签名标识 7,选择对应的签名标识,点击另存为

襄阳宜城网站建设中小企业网站建设问题

描述 C 库函数 clock_t clock(void) 返回程序执行起(一般为程序的开头),处理器时钟所使用的时间。为了获取 CPU 所使用的秒数,您需要除以 CLOCKS_PER_SEC。 在 32 位系统中,CLOCKS_PER_SEC 等于 1000000,…

低价网站建设费用多少企业网站会涉及到的版权问题

今天下载一个demo导入之后发现一个问题,提示导入的R包只有系统默认的 没有项目的,可以看下图 这种情况出现呢不多,但是出现了我就记录下,这个先看看R文件是不是还在 点击Gen包 查看 看看R文件是不是还在,打开一看果然不…

网站收录系统seo排名工具

免费赠与客户货物的销项税处理 如果免费赠与客户货物却要体现销项税,如何处理?在实际业务中因为免费货物是不免税的。所以大家总是以为使用0费用解决但是有一种情况是存在于视同销售。 即D:销售费用 C:销项税 SAP中的处理逻…

海报设计 网站自助个人网站

区块链 定 义:一种新的数据记录,存储,表达的方式。参加区块链的全体成员都有一份数据,以及每个人对数据进行的操作都会被区块链里的每个人得知。这样就可以避免都存储在一个地方导致数据丢失后造成的损失 发展历程: …

网店代运营代理博客可以做seo吗

文章目录 前言正文一、原理性文章1.1 OpenFeign篇 二、实战性文章1.1 注册中心、配置中心篇1.2 网关篇1.3 OpenFeign篇 前言 SpringCloud系列文章,有些文章上下文存在联系。 并且,它们数量巨多,有涉及原理的,有涉及实战的。 本文…

生产企业网站欣赏中国icp备案网站

使用readv和writev函数可以提高数据通信的效率,它们的功能可以概括为**“对数据进行整合传输及发送”**。 即使用writev函数可以将分散在多个缓冲中的数据一并发送,使用readv函数可以由多个缓冲分别接受,所以适当使用他们可以减少I/O函数的调…

网站建设 骏域网络建设专家广州关于我们做网站

1.先写测试 2.要使程序尽快的通过(及早交付) 3.优化程序结构,尽量使程序尽量快的运行 4.不要怕修改,单元测试会保证接口的正常运行 5.能通过测试后再去重构(消除冗余,优化程序设计) 6.用尽…