首页 > 其他分享 >浮点数二分查找的实现

浮点数二分查找的实现

时间:2024-06-03 21:31:24浏览次数:15  
标签:二分 double 浮点数 mid 整数 查找

        这是C++算法基础-基础算法专栏的第六篇文章,专栏详情请见此处


引入

        上次我们学习了整数二分查找的实现,这次我们要学习浮点数二分查找的实现。

定义

        浮点数二分查找与整数二分查找的定义都是大致相同的,如果想了解具体内容,可以移步至我的这篇博客:整数二分查找的实现​​​​​​。

过程

        与整数二分查找的过程也是大致相同的,只是有一点注意,整数二分查找一般是在数组中查找某一数值,但浮点数二分查找一般是在一段区间中查找某一数值。而且,浮点数二分查找不用考虑加1减1的情况,因为它的边界是对精度的要求。

性质

        与整数二分查找的性质也是相同的。

代码

        下面给出浮点数二分查找函数的实现: 

bool check(double x){
	// ... 
}	// 检查x是否满足某种性质

double bsearch_3(double l,double r){
	const double eps=1e-6;	// eps表示精度,取决于题目对精度的要求
	while(r-l>eps){
		double mid=(l+r)/2;
		if(check(mid))
			r=mid;
		else
			l=mid;
	}
	return l;
}
        代码解释

        check()函数的作用是检查x是否满足某种性质;bsearch_3()函数的作用是进行浮点数二分查找。


上一篇-整数二分查找的实现    C++算法基础专栏文章    下一篇-高精度加法的实现


每周六更新一篇文章,内容一般是自己总结的经验或是在其他网站上整理的优质内容

点个赞,关注一下呗~

标签:二分,double,浮点数,mid,整数,查找
From: https://blog.csdn.net/wyuchen123/article/details/137434185

相关文章

  • 算法第四天力扣第704题:二分查找
    704.二分查找的题目链接如下:https://leetcode.cn/problems/binary-search/https://leetcode.cn/problems/binary-search/  给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target  ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 ......
  • 二分查找算法的定义
       二分查找算法,也称为折半查找算法,是一种在有序数组中查找特定元素的常用算法,用于在有序数组或列表中查找特定元素的位置。它的基本思想是:首先确定目标值可能存在的区间,然后逐步缩小区间直到确定目标值的位置或者确定目标值不存在。一、二分查找算法的原理:前提条件:待......
  • Linux -- 环境变量与文件查找
    提示:制作不易看完点个关注和收藏哦前言提示:要解释环境变量,得先明白变量是什么,准确的说应该是Shell变量,所谓变量就是计算机中用于记录一个值(不一定是数值,也可以是字符或字符串)的符号,而这些符号将用于不同的运算处理中。通常变量与值是一对一的关系,可以通过表达式读取它的......
  • OpenCV 的几种查找图像中轮廓边缘的方法
     原始图片: 1、Sobel()Sobel算子结合了高斯平滑和微分,用于计算图像的梯度,从而突出显示边缘。importcv2#读取图像image=cv2.imread('image.png',cv2.IMREAD_GRAYSCALE)#使用Sobel算子查找水平和垂直边缘sobel_x=cv2.Sobel(image,cv2.CV_64F,1,0,ksize......
  • 成绩表中查找排名第k的学生
    给定一个长度为n的成绩表(成绩表中包含学生的姓名、成绩),以及一个整数k,请设计一个算法求出成绩表从小到大排序后的第k个学生的姓名、成绩(成绩保留到小数点后1位),并列则全部输出。输入描述:第一行两个正整数,n和k然后后n行,每行两个整数,分别代表每个学生的姓名和成绩输出描述:所......
  • 二分_查找
    intmain(){ intarr[]={1,2,3,4,5,6,7,8,9,10}; intk=7;//要查找的数字 //在这个arr有序数组中查找k的下标的值 intsz=sizeof(arr)/sizeof(arr[0]);//数组的元素个数 intleft=0; intright=sz-1; while(left<=right) { intmid=(left+r......
  • 算法学习笔记——二分搜索
    二分搜索在有序数组中确定num存在还是不存在:当arr[m]==num,则num存在当arr[m]>num,则r=m-1,缩小r的范围,继续往左二分当arr[m]<num,则l=m+1,缩小l的范围,继续往右二分//保证arr有序,才能用这个方法publicstaticboolenexist(int[]arr,intnum){if(ar......
  • LeetCode 704 二分查找
    第一次提交错误:if-else语句中第二个if前未加else,导致循环出错//二分查找//有序情况下的查找方式,时间复杂度O(logn)//注意左右边界以及停止循环条件left<=right classSolution{publicintsearch(int[]nums,inttarget){......
  • 信息学奥赛初赛天天练-17-阅读理解-浮点数精准输出与海伦公式的巧妙应用
    PDF文档公众号回复关键字:2024053112023CSP-J阅读程序1阅读程序(程序输入不超过数组成字符串定义的范围:判断题正确填√,错误填×;除特殊说明外,判断题1.5分,选择题3分,共计40分)源代码#include<iostream>#include<cmath>usingnamespacestd;doublef(doublea,double......
  • L2-014 列车调度(二分法)
    1.题目L2-014列车调度分数25全屏浏览切换布局作者陈越单位浙江大学火车站的列车调度铁轨的结构如下图所示。两端分别是一条入口(Entrance)轨道和一条出口(Exit)轨道,它们之间有N条平行的轨道。每趟列车从入口可以选择任意一条轨道进入,最后从出口离开。在图中有9趟列车,在......