基于与另一个精灵的接近度从NSMutablearray中删除精灵的最佳方法?

时间:2010-08-24 20:45:36

标签: iphone sorting

我有一个Sprites的NSMutableArray,我想基于它们与另一个精灵的接近度来删除它们中的一些。所以说我有10个精灵,我想删除最接近另一个精灵的前3个。

我无法想到一种复杂有效的方法,到目前为止,我提出的任何内容似乎都过于复杂和低效。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

假设没有特殊的数据结构或顺序,您可以遍历NSMutableArray的每个元素,跟踪第二个NSMutableArray中3个最接近的精灵的索引和距离,按增加的距离排序。每当您发现精灵比临时数组的第三个元素更近时,您将删除第三个元素并在数组中插入此新精灵的索引和距离。这有点棘手,但应该相当有效。

如果您想获得幻想,可以使用更复杂的数据结构根据位置将精灵分组到一起。对于10个精灵来说,它似乎会比它的价值更加麻烦。

答案 1 :(得分:0)

如果可以,您还可以根据距离对这些精灵数组进行排序。这当然会在屏幕上不断移动的游戏中起作用,但它可能适用于其他情况。然后你可以简单地获取数组的前三项。 (假设它们按距离排序,首先是最长距离)