似乎有一个类似的问题here,但我对答案的清晰度和实用性都不满意。在最近的一次采访中,我被问到我将存储大量浮点数的数据结构,以便我为自己或其最近的邻居查找新的到来。我说我会使用二叉搜索树,并尝试使其平衡以实现O(log n)。
然后问题扩展到两个维度:我将使用什么数据结构来存储大量(x,y)对,例如地理坐标以便快速查找?我想不出一个令人满意的答案,并且在扩展到K维度时完全放弃了。使用直接使用坐标值来“分割”空间的k维树似乎不起作用,因为原点附近但在不同象限内的两个近点可能最终会离开很远的树叶。
在采访之后,我记得很好地分割K维空间的Voronoi图。使用什么数据结构实现这个的最佳方法是什么?看起来怎么样?我觉得这个问题在计算机科学中非常普遍,到现在它甚至还有一个专门的数据结构。
答案 0 :(得分:0)
您可以使用网格并将点排序到网格单元格中。这里有一个类似的问题:Distance Calculation for massive number of devices/nodes。您还可以使用空间填充曲线(四键)或四叉树,例如。 r-tree当你需要额外的信息时,例如层次结构。