我试图找出一种算法,可以对立方区域(例如由 (0, 0, 0) 定义的区域到 (1, 1, 1) 定义的区域进行排序,并且在给定坐标时尽可能快地返回该区域。
例如:数据结构包含区域:(0, 0, 0) 到 (100, 100, 100), (1000, 1000, 1000) 到 (1010, 1010, 1010) 和 (-50, -50, -50) 到(60, -60, 60)
因此搜索 10, 10, 10 将返回区域 1,(1001, 1001, 1001) 将返回区域 2 等
排序、添加、删除时间可能会很长。我需要一个快速的搜索时间,我们可以假设它的唯一整数将被搜索,并且制作一个 3d 网格并参考该区域填充该区域内包含的每个单元格的解决方案不是一个可接受的解决方案,我没有 3TB公羊专用于此:P。我们也可以假设区域不会重叠,如果这对任何人都有帮助
如果有人有想法,我会很高兴听到
多谢你们
-奥利维尔-
编辑:使用包含 minX、minY、minZ、maxX、maxY、maxZ 的结构来表示一个区域,并将所有这些区域放在一个列表中,您可以在其中一一搜索(通过检查坐标是否大于 minX 但小于 maxX , 每个坐标都一样 ) 仍然太慢 O(N)
目前,我正在探索使用 n 叉树进行排序的想法,按 x 排序,然后按 y,然后按 z,但我不知道它是否会是一个好的