2014-03-02 43 views
1

我有多個未分類的2D點P0P1P2,...,光合速率所有是共線的。我想盡可能快地獲得距離最遠的* P_0 ** P_n *快速算法得到的多點共線最外點

P0   P1  P2 P3     Pn 
|-----------|--------|----|--------------------| 

我不知道如何做到這一點,但用蠻力算法計算所有距離和排序點。任何想法?

+0

如果它們是共線的,我想你可以簡單地比較它們的'x'值(或者'y'值,如果它們碰巧排在y軸上)。因此,只需循環所有值來記錄最小值和最大值。 O(n)並且不需要數學。 – Blorgbeard

回答

1

如果點是共線的,那麼可以通過直接比較它們的座標來比較它們。您無需計算距離原點或點之間的距離。而且您不需要對整個列表進行排序以獲取最小值和最大值。

僞代碼:

min = p0 
max = p0 
for each point p 
    if p.X < min.X || p.Y < min.Y then min = p 
    if p.X > max.X || p.Y > max.Y then max = p 

你可以用算法有點不甘示弱:有沒有必要檢查Y除非X值都是相同的。

+0

很棒,thx! –