如何保持数组排序

时间:2010-10-05 18:36:27

标签: objective-c cocoa sorting nsarray subclassing

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

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

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

编辑: 由于提到了性能问题,我将在项目中包含相关信息。速度不是一个重要的问题。整个过程只需几秒钟,而且工具只是经常使用。所以简单和明显的正确性更重要。

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

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:3)

结帐CHDataStructures。它是一个拥有大量自排序数据结构的框架,比如平衡二叉树和诸如此类的东西。