2 namedajipai namedajipai 于 2016.09.22 15:25 提问

如何在二分查找的程序中实现对某个具体的浮点型进行精确地查找的算法?

如何在二分查找的程序中实现对某个具体的浮点型进行精确地查找的算法?是基于dat文件的存储的搜索,用什么方式进行?

2个回答

caozhy
caozhy   Ds   Rxr 2016.10.16 00:24
已采纳
hijack00
hijack00   Rxr 2016.09.23 12:21

浮点数无法实现精确比较,所以不能直接实现你这里所说的精确查找。可以通过hash的思路对浮点数做一个转换,最后以这个hash值作为key来进行查找,这样应该可以实现精确查找。
一种最简单的hash函数就是讲一个浮点数对应的二进制表示或者16进制字符串表示序列作为hash值,两个精确相等的浮点数的16进制表示对应的字符串应该是完全相同的,这样就转化为字符串的比较了,可以实现精确查找。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
在java用二分查找法实现对数组的排序
二分查找法:前提是数组中的元素要有序,这里只贴自己的图片,至于代码要靠自己写了,毕竟单纯的复制粘贴而不去思考对学习一点用处都没有: 实际上数组已经自带了一个排序算法: Arrays.sort(数组名)为数组排序的操作,但这个方法在java.util这个包里面,所以在用到的时候需要先将它导入, 但这里我们自己写一个算法,加深对排序算法的理解. 运行便可以实现对数组中的元素排序了,就是这么简单…
二分查找实现及其应用
二分查找,应用广泛,将n个元素分成个数大致相同的两半,取a[n/2]与欲查找的x作比较,如果x=a[n/2]则找到x,算法终止。如果x<a[n/2],则我们只要在数组a的左半部继续搜索x(这里假设数组元素呈升序排列)。如果x>a[n/2],则我们只要在数组a的右半部继续搜索x。
c++实现二分查找
简要描述: 二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。 条件:查找的数组必须要为有序数组。 二分查找的过程剩简要描述如下图: 二种实现方式 1.递归 /* arrat:数组 , low:上界; high:下界; target:查找的数据; 返回target所在数组的下标 */ int
【算法分析】查找算法:二分查找、顺序查找
08年9月入学,12年7月毕业,结束了我在软件学院愉快丰富的大学生活。此系列是对四年专业课程学习的回顾,索引参见:http://blog.csdn.net/xiaowei_cqu/article/details/7747205 查找算法 查找算法是在存在的序列(list) 中查找特定的目标(target),要求序列中每个记录必须与一个关键词(key)关联才能进行查找。
C++实现二分查找算法
想必二分查找很多人都不陌生,或许说很熟悉,但是在实际生活中又有很多人不能正确的写出它的相应代码,因为二分查找的边界条件等很难控制,下面我们来仔细的分析一下二分查找,这只是个人看法,如有异议,欢迎提出。  1、二分查找可以解决的问题:二分查找可以解决预排序数组的查找问题。只要数组中包含T(即要查找的值),那么通过不断的缩小包含T的范围,最终就可以找到它。一开始,范围覆盖整个数组,将数组的中间项与T
二分查找算法变体在实际项目中的应用
一、应用场景 项目场景描述:数据库中共有45万条记录,保存了起始IP和终止IP,以及在此IP段对应的地理位置信息,如 114.104.085.000---114.104.085.255 中国 安徽省 六安市。 项目需求: 输入一条IP地址,可以获得该IP所对应的地理位置信息;空间复杂度暂时不考虑,要求查找时间小于2ms。
二分查找(折半查找) -- 已排序序列的查找算法
二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。 因此,折半查找方法适用于不经常变动而查找频繁的有序列表。二分查找思想首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功; 否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查
Java集合中二分查找算法实现
Java集合中二分查找算法实现 Arrays.binarySearch实现了对有序数组特定区间的二分查找,虽然我们觉得很简答,但是阅读源码的确能看到实现这些库的优秀技巧,总是在追求完美和高效。 值得学习的地方有: (1)边界检查; (2)求中位数的时候使用位移操作,而不是 x/2; (3)如果查找的元素不在数组中,通过返回值昭示了应该插入的位置,而不是直接返回-1;
算法-查找-线性表的查找(顺序查找,二分查找,分块查找)
这里介绍几种基于线性表的查找方法: 顺序查找 二分查找 分块查找 查找的定义是:给定一个值K,在含有n个结点的表中找出关键字等于给定值K的结点。若找到,则查找成功,返回该结点的信息或该结点在表中的位置;否则查找失败,返回相关的指示信息。1、顺序查找基本思想:从数据的一端开始查找,比较元素是否与查找元素相同,若有则查找成功,直到另一端结束。既适用于线性表的顺序存储结构,也适用于线性表的链式存储结构,但
有序表上的查找(二分查找法)
/*有序表上的查找(二分查找法)*/ #include<stdio.h> #define Maxsize 10 typedef int KeyType; typedef struct { int elem[Maxsize]; int n; /*最后一个数据元素的下标*/ }SqTable; void Create(SqTable *st) { int