我正在使用扫描线实现2D最近对算法,并且它表示您需要在某个y坐标之上找到六个点。我所做的是将点放在按y坐标排序的TreeSet中,并使用tailSet方法获取高于某个点的所有点,并迭代最多6次。
我想知道tailSet操作的复杂性是否为O(log n),如果是,则迭代遍历tailSet最多六次也是O(log n)?
参考:http://people.scs.carleton.ca/~michiel/lecturenotes/ALGGEOM/sweepclosestpair.pdf
答案 0 :(得分:4)
AFAIK将tailSet设为O(log n),但迭代最后m
个元素为O(m * log n)
答案 1 :(得分:3)
小澄清:tailSet(),headSet()和subSet()返回非常小的对象,这些对象将所有艰苦的工作委托给底层集的方法。没有构建新的集合。因此O(1)和非常微不足道。