从一个已排序并且大致线形递增的文件中搜索某个值的算法问题
假设某个文件中存储整形值, 两个值之间相差不大(基本上是等差数列)
且递增, 现给定一个值,要从此文件中找到此值的位置
我想用求比例的方式先算出此值的大致位置,再读几个值到内存中判断, 但发现由于使用了float型值,求得的大致位置非常不准确, 有没有比较好的方法?
[解决办法]
类似二分法,不同的是:
二分总是用 (high-low)/2来分割;
这里用“求比例的方式先算出此值的大致位置”low+(high-low)*(value-low_value)/(High_value-low_value)来分割;