我有一个需要对几个NSMutableArrays进行排序的iPhone应用程序,这个数组包含大约3000个元素。
我们的想法是在应用程序启动时对它们进行一次排序,然后每次迭代我需要向每个数组插入9个元素。 NSMutableArrays是否有一种有效的方法,以排序的方式插入这9个元素?
我不知道sortUsingSelector:是否“足够聪明”以利用主要排序的数组,只有9个元素被“未排序”。
谢谢!
答案 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