java - 一种有效索引数千个移动点的数据结构?

标签 java algorithm data-structures

情况:

我可能有数以万计的移动 (2D) 点。它们仅在一定半径范围内相互影响。它们可以从一个地方移动到另一个地方(本质上不是传送,只是在屏幕上飞来飞去)。

由于我必须在每次更新时检查更新,因此高效地执行此操作非常重要。

我天真的解决方案是简单地创建一个网格类型结构,网格间距围绕效果半径某处,并且随着点从一个单元格移动到另一个单元格,更新它们所在的单元格。所以当我需要进行效果检查时,我只必须检查一个点的单元格和几个相邻的单元格。

我熟悉四叉树,但我担心它比我需要做的要贵一点,但如果这确实是正确的路线,我愿意接受建议。

此外,对于附加信息,这是使用 Java 编写的。

谢谢

最佳答案

我过去和我的下一个项目都会遇到类似的情况。
我选择了简单的网格变体,因为它更简单,实现起来也更快。 数万处于四叉树或 k-d 树可能有意义的边界。 (尤其是当许多单元格为空时)

您应该尝试测试网格方法是否足够。可能是。

关于java - 一种有效索引数千个移动点的数据结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14669185/

相关文章:

algorithm - OCR:根据最后 N 个结果选择最佳字符串(OCR 自适应过滤器)

algorithm - 计算成对和的乘积 mod 10^9+7 的替代方法比 O(N^2) 快

algorithm - 元素数组的多个查询更新

python - 快速访问成对操作的总和

algorithm - 生成单词所有组合(字母顺序)的最佳算法

java - 在 Android 中处理事件的最佳方式

Java-遍历一个数组并用相同的值向上计数

java - 如何最好地为用户配置上传位置以上传支持文件

algorithm - 生成二项式系数的最快方法

java - 检测对象中的循环引用