2010-08-24 39 views
0

我有一個NSMutableArray的精靈,我想根據他們接近另一個精靈來移除其中的一些。所以說我有10個精靈,我想刪除最接近另一個精靈的前3個精靈。基於接近另一個精靈從NSMutable陣列中刪除精靈的最佳方法?

我想不出一種複雜而高效的方法來做到這一點,但我迄今爲止提出的任何方法似乎過於複雜且效率低下。有任何想法嗎?

回答

1

假設沒有特殊的數據結構或順序,您可以遍歷NSMutableArray的每個元素,跟蹤第二個NSMutableArray中3個最接近的精靈的索引和距離,按距離增加排序。每當你發現一個精靈比臨時數組的第三個元素更近時,你就丟棄第三個元素,並在數組中插入這個新精靈的索引和距離。這有點棘手,但應該相當有效。

如果你想變得很花哨,你可以使用一個更復雜的數據結構來根據它們的位置來拼湊精靈。對於10個精靈來說,它似乎會比它的價值更麻煩。

+0

你說的那麼多,我只是想知道是否有任何與NSMutableArray相關的函數可以利用。謝謝您的幫助。 – Tiddly 2010-08-24 23:34:16

0

如果可以,您還可以保持基於距離排序的精靈數組。這在當然不會在屏幕上四處移動的遊戲中不起作用,但它可能適用於其他情況。然後,您可以簡單地獲取數組的前三項。 (假設它們按距離排序,最長的距離先排序)