从一个已排序并且大致线形递增的文件中搜索某个值的算法问题

redex 2007-08-07 10:07:23
假设某个文件中存储整形值, 两个值之间相差不大(基本上是等差数列)
且递增, 现给定一个值,要从此文件中找到此值的位置

我想用求比例的方式先算出此值的大致位置,再读几个值到内存中判断, 但发现由于使用了float型值,求得的大致位置非常不准确, 有没有比较好的方法?
...全文
111 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
redex 2007-08-07
  • 打赏
  • 举报
回复
--------------------------------------------------
假设:
文件长度: 4*1024
文件内容: 1, 2, 4, 6, 7, 9, 11, 12 ... ...2000

搜索7:

(4*1024) * (7-1)/(2000-1) = 4096*6/1999 = 12.294
--------------------------------------------------

看来只能先找出"大致"位置了, 找出"大致"位置后, 还得看看这个位置上
的元素是不是比7大, 如果比7大就得往前搜了.
tailzhou 2007-08-07
  • 打赏
  • 举报
回复
类似二分法,不同的是:
二分总是用 (high-low)/2来分割;
这里用“求比例的方式先算出此值的大致位置”low+(high-low)*(value-low_value)/(High_value-low_value)来分割;

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧