排序NSMutableArray的最佳方法是什么?

时间:2009-12-13 14:53:02

标签: iphone cocoa-touch nsmutablearray

我有一个需要对几个NSMutableArrays进行排序的iPhone应用程序,这个数组包含大约3000个元素。

我们的想法是在应用程序启动时对它们进行一次排序,然后每次迭代我需要向每个数组插入9个元素。 NSMutableArrays是否有一种有效的方法,以排序的方式插入这9个元素?

我不知道sortUsingSelector:是否“足够聪明”以利用主要排序的数组,只有9个元素被“未排序”。

谢谢!

3 个答案:

答案 0 :(得分:4)

我已经取得了很好的成功,只需将元素抛入数组,然后使用NSArray sorting methods对其进行排序。

这听起来效率低下,但这些基础类不仅仅是标准C数组的轻量级包装器。相反,他们拥有大量的代码,这些代码都是为了使这些标准任务变得简单快捷而构建的。

一个好的经验法则是使用内置类提供的最快最简单的方法,然后只有当你已经证明easy方法不够快时才研究不同的方法。

过早优化是万恶之源。

答案 1 :(得分:2)

排序NSMutableArray的最佳方法是什么?使用sortUsingSelector消息。它应该足够聪明

要以排序方式插入元素,您可以先在数组上进行二进制搜索,然后将元素插入所需位置。

在回答了您的问题之后,我建议您考虑使用SQLite来存储您想要的数组元素。这样,您的问题将减少为使用带有 order by 子句的元素查询表,并使用 insert 句子插入新的9个元素。如果您有所需订单的索引,那么它应该很快。

答案 2 :(得分:1)

我正在寻找一些比较不同种类的实际测量值,但没有找到。所以我自己测量了一个我正在使用的实际数据集。以下是我的数据YMMV的结果。几秒钟的时间。

2011-12-26 14:09:36.264 sorting 302 objects
2011-12-26 14:09:36.335 sorted w/descriptors in  0.051
2011-12-26 14:09:36.361 sorted w/selector    in  0.004
2011-12-26 14:09:36.394 sorted w/function    in  0.010
2011-12-26 14:09:36.427 sorted w/comparator  in  0.011