当前位置: 首页 > news >正文

Java算法篇之二分查找模板

大家好,这里是教授.F

模板一:

用于查找可以通过访问数组中的   单个索引   来确定的元素或条件。

对于二分查找,我认为最适用在通过一个范围确定某一点。 就是通过折中的方式来逼近到某一个点。

有很多场景可以使用它,比如:求出一个值的平方根,我们可以通过使用折中的方式不断逼近,以达到目的。

int binarySearch(int[] nums, int target){if(nums == null || nums.length == 0)return -1;int left = 0, right = nums.length - 1;while(left <= right){//这里有等号// Prevent (left + right) overflowint mid = left + (right - left) / 2;if(nums[mid] == target){ return mid; }else if(nums[mid] < target) { left = mid + 1; }else { right = mid - 1; }}// End Condition: left > rightreturn -1;
}

模板二:

它用于查找需要访问数组中当前索引及其直接右邻居索引的元素或条件。

int binarySearch(int[] nums, int target){if(nums == null || nums.length == 0)return -1;int left = 0, right = nums.length;while(left < right){// Prevent (left + right) overflowint mid = left + (right - left) / 2;if(nums[mid] == target){ return mid; }else if(nums[mid] < target) { left = mid + 1; }else { right = mid; }}// Post-processing:// End Condition: left == rightif(left != nums.length && nums[left] == target) return left;return -1;
}

相关文章:

  • C++ Thread多线程并发记录(3)线程创建总结
  • 基础—SQL—DML(数据操作语言)修改和删除
  • 力扣----轮转数组
  • 重学java 61.IO流 ② 字节输出流
  • 【面试宝藏】Redis 常见面试题解析
  • 如何通过PHP语言实现远程控制多路照明
  • 利用BeanFactoryPostProcessor让Bean提前被创建
  • 汽车IVI中控开发入门及进阶(二十四):杰发科技AC8015
  • 高通Android 12/13实现USB拔出关机功能
  • 了解CSS中的link和@import引入CSS的区别
  • Linux搭建PHP下的RabbitMQ环境(php-amqp/rabbitmq-c/erlang)
  • 如何管理和维护组件库?
  • WPF实现简单的3D图形
  • Android ViewPager和ViewPager2的区别
  • jenkins插件之plot
  • [iOS]Core Data浅析一 -- 启用Core Data
  • IIS 10 PHP CGI 设置 PHP_INI_SCAN_DIR
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • javascript数组去重/查找/插入/删除
  • node入门
  • Python学习之路13-记分
  • tab.js分享及浏览器兼容性问题汇总
  • 从伪并行的 Python 多线程说起
  • 订阅Forge Viewer所有的事件
  • 动态魔术使用DBMS_SQL
  • 开年巨制!千人千面回放技术让你“看到”Flutter用户侧问题
  • 利用阿里云 OSS 搭建私有 Docker 仓库
  • 少走弯路,给Java 1~5 年程序员的建议
  • 使用agvtool更改app version/build
  • 微信小程序填坑清单
  • 无服务器化是企业 IT 架构的未来吗?
  • 源码安装memcached和php memcache扩展
  • const的用法,特别是用在函数前面与后面的区别
  • ionic入门之数据绑定显示-1
  • Prometheus VS InfluxDB
  • ​LeetCode解法汇总2583. 二叉树中的第 K 大层和
  • #Linux(帮助手册)
  • (3)STL算法之搜索
  • (翻译)terry crowley: 写给程序员
  • (论文阅读笔记)Network planning with deep reinforcement learning
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (实战篇)如何缓存数据
  • (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境
  • (学习日记)2024.02.29:UCOSIII第二节
  • (转)setTimeout 和 setInterval 的区别
  • .Net 6.0 处理跨域的方式
  • .NET Compact Framework 3.5 支持 WCF 的子集
  • .NET 回调、接口回调、 委托
  • .net6解除文件上传限制。Multipart body length limit 16384 exceeded
  • .net使用excel的cells对象没有value方法——学习.net的Excel工作表问题
  • [ C++ ] STL---仿函数与priority_queue
  • [ CTF ] WriteUp- 2022年第三届“网鼎杯”网络安全大赛(朱雀组)
  • [ 攻防演练演示篇 ] 利用通达OA 文件上传漏洞上传webshell获取主机权限
  • [acm算法学习] 后缀数组SA
  • [BZOJ1089][SCOI2003]严格n元树(递推+高精度)