gpt4 book ai didi

c++ - 范围最小值/最大值查询

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:35:58 24 4
gpt4 key购买 nike

我有坐标点 (x,y) 说我有 10 000 点。现在当一个新点作为测试查询给出时说(p,q)。我必须检查坐标点中的每个点。如果文本查询的 x 坐标是 PY通过在线搜索,我了解到 Rmq- range min/max 查询数据结构可以帮助我,但我不确定该怎么做。有人可以帮助我吗,我该怎么做。C++ 中的任何引用或代码帮助都会很有帮助。谢谢

最佳答案

如果您的目标是检查数据集中是否存在该点,那么您可以使用许多非常有用的数据结构来保存数据,每个数据结构都支持非常高效的查找。

对于初学者来说,如果您只需要知道点是否存在,您总是可以将所有点存储在标准哈希表或平衡二叉搜索树中。这将分别提供 O(1) 或 O(log n) 查找时间。此外,这些结构往往适用于大多数编程语言。

另一方面,如果您计划对数据进行更奇特的操作,例如在数据集中搜索距离某个测试点最近的 k 个点,或者试图找到某个边界区域中的所有点,您可能需要考虑使用 kd-treequadtree .标准二进制搜索的这些变体提供快速查找(O(log n) 时间)。 kd-tree 也支持非常快的 k-nearest-neighbor searches并在边界体积内搜索。此外,如果您有任何实现标准二叉搜索树的经验,则 kd 树实现起来非常容易。

希望这对您有所帮助!

关于c++ - 范围最小值/最大值查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7183949/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com