我有一個頂點列表和一個區域列表(矩形/矩形)的形狀。頂點具有x和y座標,並且區域具有(x,y,高度和寬度)。我怎樣纔能有效地檢查哪個頂點位於每個頂點/區域的哪個區域?檢查一組點是否在矩形數組內?
編輯:
這是我寫的代碼來做到這一點。編輯2:我用它來生成區域,但我需要一種方法來從左到右分配網格中的每個區域regionID。例如:
1 - 2 - 3
4 - 5 - 6
7 - 8 - 9
對於3x3網格。目前,它是以下形式:
1 - 1 - 1
2 - 2 - 2
3 - 3 - 3
for (int i = 0; i < rowValue; i++) {
for (int j = 0; j < columnValue; j++) {
Grid r = new Grid(0, 20 + i * size, 20 + j * size, size, size);
r.setRegionID(j + 1);
g.addRegion(r);
}
}
我已經更新了原來的職位的源代碼。你能看到任何可以改進的地方嗎? – RikudouSennin 2012-08-05 14:50:27
如果你的get(x)在O(1)中工作,那麼你的算法在O(#vertices * #regions)中工作。如果因此需要對列表(頂點,區域),那麼可以有O(#vertices * #regions)這樣的對,所以您的算法是最優的。如果你的結果更加緊湊,例如對於每個頂點至多1個區域,那麼更快的算法可能是可能的 – piotrek 2012-08-05 15:05:29