线段范围的问题

tyzy313481929 2011-01-08 06:17:27
现在有几条线段,比如说1000以下,1000-2000,4000-5000,10000以上的线段,现在再找来一个线段3500-4500,要判断其是否在已存在的范围内。注(在初始阶段没有任何记录),请给出思路,多谢……
(用户可以输入数据,只填其中的一个,表示数值以下或者以上)

...全文
76 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
绿色夹克衫 2011-01-08
  • 打赏
  • 举报
回复
多次查询的话还是搞个线段树简单一些。
showjim 2011-01-08
  • 打赏
  • 举报
回复
先扫描一遍,取满足要求与目标有交集(包括包含关系)的线段集合。
然后判断这个集合是否能合并成一个线段,可以排序再合并。
ryfdizuo 2011-01-08
  • 打赏
  • 举报
回复
B-树可以不?
tyzy313481929 2011-01-08
  • 打赏
  • 举报
回复
你这种情况值考虑了在其范围内的数据,假如我有3000到5000线段6000到7000这个线段,我现在用3500到5500的比较,你的方法就不行了,有交集,我的意思是插入的范围在已存的范围内不存在,初始阶段没有任何的值,不知道我理解的正确不,如不正确,请多包含。
cug_fish_2009 2011-01-08
  • 打赏
  • 举报
回复
我考虑已知线段有可能有交集的情况,那么先将已知线段求并集,
最后得到的线段为没有交集的线段集合[ai,bi], 0<=i<n,假设处理后有n条线段。
现在以每条线段的ai值进行排序。

后面的事情非常好办,用二分就ok。
如果用户想判断线段为[a,b]是否在已知线段范围内?

if(a>=ai && a<a(i+1) && b<=bi)
说明[a,b]在范围内;
else ...

简单点:排序+二分。

33,007

社区成员

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

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