找出一个距离给定点最近的点

heyyg 2015-11-23 01:45:32
问题描述如下:给定平面上的N个点,再给出一点P,在N个点中找出与P距离最近的点。可对给定的N个点进行预处理,建立相应的数据结构,能否找到一个不用遍历所有N个点的算法?
...全文
1653 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
heyyg 2015-12-04
  • 打赏
  • 举报
回复
目前是先将空间范围划分为网格,对每个网格建立索引,记录每个网格内是否有点,如果没点则记录周围最近的有点的格子。 然后对给定点判断落在哪个格子里,然后就知道找周边哪些格子进行计算了。
heyyg 2015-11-24
  • 打赏
  • 举报
回复
因为是二维的 d = sqrt( (x-x1)*(x-x1) + (y-y1)* (y-y1) ), 对X Y排序 不能解决距离也有序问题。 用四叉数好像可以,将问题简化为空间问题。只需要考虑邻近的4个区域内的点即可!
lm_whales 2015-11-23
  • 打赏
  • 举报
回复
不用排序,只要求出最大最小坐标,就可以了
lm_whales 2015-11-23
  • 打赏
  • 举报
回复
如果是做了x坐标和y坐标排序的预处理,应该可以的
赵4老师 2015-11-23
  • 打赏
  • 举报
回复
搜“四叉树”?
heyyg 2015-11-23
  • 打赏
  • 举报
回复
刚看了 编程之美中的 寻找最近点对,貌似也借鉴不上!
heyyg 2015-11-23
  • 打赏
  • 举报
回复
P的位置是任意的
paschen 版主 2015-11-23
  • 打赏
  • 举报
回复
如果P点的位置是任意的,感觉预处理那N个点也没用

64,266

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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