我的程序包含多边形,这些多边形具有包含点的矢量形式(2维双坐标,存储在自制结构中)。我正在寻找一种快速查找包含多边形的最小方块的方法(即知道所有点的最大和最小坐标)。
有没有比解析所有点并存储最小值和最大值更快的方法?
答案 0 :(得分:0)
我不确定是否有更快的方法来找到min&值数组中的最大值大于线性时间。我能想到的唯一'优化'是在你迭代数组的其他场合找到这些值(在所有点上填充/执行一个函数),然后对任何数据更新执行检查。
答案 1 :(得分:0)
您正在描述的算法很简单:迭代所有点并找到每个坐标的最小值和最大值。这是一个O(n)算法,n是你拥有的点数。
你不能做得更好,因为你需要至少检查一下你的所有积分,否则最后一点可能在你找到的广场之外。
现在,复杂性最多只有O(n)所以你只需要最小化常数因子,但在这种情况下,它已经非常小:只有一个循环在你的向量上,寻找两个最大值和两个最小值。
答案 2 :(得分:0)
您可以遍历所有点并查找最大值和最小值,或进行一些预处理,例如,将您的点存储在treap(http://en.wikipedia.org/wiki/Treap)中。 除了迭代所有点之外,没有办法不进行一些预处理。