扫描线算法-求线段交点数量
生活随笔
收集整理的這篇文章主要介紹了
扫描线算法-求线段交点数量
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
將所有線段的左右端點以X坐標升序放入頂點優先隊列中,然后初始化掃描線鏈表(查找二叉樹)
依次取出頂點優先隊列中的點,
1 左端點:將其線段插入到掃描線鏈表中,按照y的升序排列鏈表,找到在此線段上面相鄰和下面相鄰的線段,并依次計算此線段與其上面線段的交點,和此線段與其下面線段的交點,如果有交點,并且頂點隊列中沒有出現過,插入到頂點優先隊列中;
2 右端點:將其線段從掃描線隊列中刪除,計算此線段上面相鄰的線段與下面相鄰的線段的交點,如果有交點,并且沒有在頂點隊列出現過,將交點插入到頂點優先隊列中
3 交點:輸出該交點,交換此交點所屬的兩條線段的位置,并分別計算這兩條線段與他們的相鄰線段的交點,插入的頂點優先隊列中
(n+k)logn ?
k為交點數目,n為線段數量
總結
以上是生活随笔為你收集整理的扫描线算法-求线段交点数量的全部內容,希望文章能夠幫你解決所遇到的問題。