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

3.整数二分

在这里插入图片描述
在这里插入图片描述

模板

package base;public class Bsearch {public int binary_search1(int l, int r){while (l<r){int mid = (l+r+1)>>1;if(check(mid)) l=mid;else r = mid-1;}return l;}public int binary_search2(int l, int r){while (l<r){int mid = (l+r)>>1;if (check(mid)) r = mid;else l=mid+1;}return l;}public boolean check(int mid){return false;}
}

例题:
在这里插入图片描述

package test;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;public class Test1 {public static void main(String[] args){BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));try{System.out.println("输入数组长度:");int n = Integer.parseInt(bf.readLine());//定义数组int a[] = new int[n];for(int i = 0;i<n;i++){System.out.println("在数组中添加第"+(i+1)+"个数据:");a[i] = Integer.parseInt(bf.readLine());}//定义查询个数System.out.println("输入要查询元素的个数:");int q = Integer.parseInt(bf.readLine());//开始查找while(q-->0){System.out.println("输入要查询元素值:");int x = Integer.parseInt(bf.readLine());binary_search(n,a,x);}}catch(IOException e){e.printStackTrace();}}/*n:数组长度a[]:数组x:要查询的数x*/public static void binary_search(int n,int[] a,int x){//定义指针int l = 0,r = n-1;while(l<r){//确定左边界int mid = (l+r)>>1;if(a[mid]>=x) r=mid;else l=mid+1;}if(a[l]!=x){System.out.println("-1 -1");return;}else System.out.print(l+" ");//确定右边界l = 0;r = n-1;while(l<r){int mid = (l+r+1)>>1;if(a[mid]<=x) l = mid;else r=mid-1;}System.out.println(l);}}

相关文章:

  • YOLOv9改进策略【注意力机制篇】| 蒙特卡罗注意力(MCAttn)模块,提高小目标的关注度
  • 无人机在农业方面的应用!
  • java通过redis完成幂等性操作
  • 基于RPA+BERT的文档辅助“悦读”系统 | OPENAIGC开发者大赛高校组AI创作力奖
  • 前端学习笔记-JS进阶篇-02
  • 54 循环神经网络RNN_by《李沐:动手学深度学习v2》pytorch版
  • 安卓Android压力测试与性能测试详解!
  • 什么是SQL注入?
  • Linux 学习笔记(十五)—— 基础IO
  • OpenCV_自定义线性滤波(filter2D)应用详解
  • C# CS1612 尝试修改集合中值类型的情况
  • Android常用C++特性之std::equal
  • TCP\IP标准与OSI标准
  • Springboot项目在win系统开发部署到linux服务器出现上传文件编码问题
  • Linux下的git开篇第一文:git的意义
  • 2017年终总结、随想
  • canvas实际项目操作,包含:线条,圆形,扇形,图片绘制,图片圆角遮罩,矩形,弧形文字...
  • emacs初体验
  • GDB 调试 Mysql 实战(三)优先队列排序算法中的行记录长度统计是怎么来的(上)...
  • GitUp, 你不可错过的秀外慧中的git工具
  • Java|序列化异常StreamCorruptedException的解决方法
  • JavaScript工作原理(五):深入了解WebSockets,HTTP/2和SSE,以及如何选择
  • Linux CTF 逆向入门
  • MD5加密原理解析及OC版原理实现
  • SpiderData 2019年2月23日 DApp数据排行榜
  • 阿里云购买磁盘后挂载
  • 半理解系列--Promise的进化史
  • 爬虫进阶 -- 神级程序员:让你的爬虫就像人类的用户行为!
  • 通过几道题目学习二叉搜索树
  • 正则表达式小结
  • HanLP分词命名实体提取详解
  • ​草莓熊python turtle绘图代码(玫瑰花版)附源代码
  • ‌‌雅诗兰黛、‌‌兰蔻等美妆大品牌的营销策略是什么?
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • (2024最新)CentOS 7上在线安装MySQL 5.7|喂饭级教程
  • (C语言)共用体union的用法举例
  • (SpringBoot)第七章:SpringBoot日志文件
  • (STM32笔记)九、RCC时钟树与时钟 第二部分
  • (保姆级教程)Mysql中索引、触发器、存储过程、存储函数的概念、作用,以及如何使用索引、存储过程,代码操作演示
  • (二)windows配置JDK环境
  • (机器学习-深度学习快速入门)第三章机器学习-第二节:机器学习模型之线性回归
  • .bat批处理(十):从路径字符串中截取盘符、文件名、后缀名等信息
  • .form文件_SSM框架文件上传篇
  • .htaccess配置常用技巧
  • .net 桌面开发 运行一阵子就自动关闭_聊城旋转门家用价格大约是多少,全自动旋转门,期待合作...
  • .Net程序猿乐Android发展---(10)框架布局FrameLayout
  • [AIGC] 解题神器:Python中常用的高级数据结构
  • [AutoSar]BSW_Memory_Stack_003 NVM与APP的显式和隐式同步
  • [C++]入门基础(1)
  • [C++11 多线程同步] --- 条件变量的那些坑【条件变量信号丢失和条件变量虚假唤醒(spurious wakeup)】
  • [Deepin] 简单使用 RustDesk 实现远程访问Deepin
  • [ERR] 1273 - Unknown collation: ‘utf8mb4_0900_ai_ci‘(已解决)
  • [java][代码]DateUtil用于处理日期和时间
  • [LeetCode]284. Peeking Iterator(C++,类,暴力)
  • [leetcode]max-consecutive-ones 最大连续1的个数