圈我想不出什麼數據結構將是最適合這種類型的問題:到選擇什麼樣的數據結構,實現與削減
我有一個圓圈。它可以在不同的位置(角度)切割。切口之間的部分具有顏色(例如紅色或黑色)。如果沒有切割,所有的圓都有一種顏色。
我需要什麼操作?
[1]改變段的顏色。
[2]以某個角度添加切口。
[3]對於給定的角度來說明它屬於哪個段。
[4]連接相同顏色的連續段。
現在我有一個段存儲角度的兩端和顏色段。 和ArrayList來處理它。
的問題,我有:
[1]我想要的東西比ArrayList的速度更快。 (TreeSet?別的東西?)
[2]我正在治療沒有割傷的圓作爲特殊情況。 (在0和0處有兩個假切割)
[3]我正在處理包含0角的段作爲特例。說分段(7pi/8,pi/8)和(pi/8,7pi/8)需要不同的方法和大量的條件。
我有工作程序,它使用我自己的基於'ArrayList'的類,但是!我將它用於某些磁系統的蒙特卡洛模擬(並且所需的精度需要大量的迭代)。所以性能至關重要(內存使用不是)。 眼下探查說,最耗時的部分是: 「索引」功能,就是找到一些給定的角度屬於哪個段(我把段的順序和使用二進制搜索) 「添加」 - 在一個給定的加段位置。 「remove」 - 從ArrayList中刪除Segment。 –
Vladimir
@ user2276600看到我的編輯 –