2010-10-05 58 views
2

我正在重构一个涉及传递大量数组的项目。目前,返回数组的每个方法在返回之前将其排序。这对于几个原因并不理想 - 有很多重复的代码,对数组进行两到三次排序效率不高,而且编写新函数太容易,但忘记在返回数组之前对数组进行排序。如何保持数组的排序

我正在寻找一种方法来保证数组始终保持按字母顺序排列。我目前的想法是划分NSMutableArray和/或NSArray以创建按字母顺序排列的数组类。我需要覆盖所有创建或修改数组的方法,以调用super然后自行排序。

这听起来合理吗,还是有更好的方法?

编辑: 由于性能问题已被提及,我将包括我的项目中的相关信息。速度不是一个重要的问题。整个过程只需要几秒钟,而且该工具只能每隔一段时间使用一次。所以简单和明显的正确性更重要。

此外,数组的用例是特定的。当数组返回时,调用者总是访问数组中的每个元素至少一次。

回答

3

结账CHDataStructures。这是一个有很多自我排序数据结构的框架,如平衡二叉树和什么。

+0

我会检查这些,这看起来可能是我正在寻找的。 – 2010-10-05 23:34:02

4

平衡二叉树是保持项目排序的标准和有效的方式。几乎所有使用普通数组进行随机访问的方法都很慢。跳过列表也很有效,您可以将该功能添加到数组类中。

+0

我从来没有听说过跳过列表 - 关闭维基百科来阅读他们。谢谢! – 2010-10-07 16:31:07