sortedArrayUsingComparator的时间复杂度(大O)是多少?的iOS / OSX

时间:2015-04-17 11:40:12

标签: ios macos algorithm

我需要知道时间的复杂性 NSArray类的 sortedArrayUsingComparator 函数。一个消息来源会很棒,因为我可能会在我的学士论文中提到它。 我正在按距离到当前位置对一系列位置进行排序。

我能找到的唯一答案是有人说它至少是T(n)= O(n)但可能是T(n)= O(n log n)

我怎么知道?

2 个答案:

答案 0 :(得分:4)

通过NSArray排序的实际试验,时间与O(n*log(n))一致。

请参阅blog post

请注意,在评论中有一种排序方法(PS9110),它是O(n)但是专有并获得专利。这个方法非常有趣。

答案 1 :(得分:1)

要对数组进行排序,您必须至少查看每个肯定O(n)的元素。有几篇数学论文向您展示,例如,O(n*log(n))之类的Mergesort可能不是更好的排序算法。由于比较器实现了Mergesort,我认为对于最佳,平均和最差情况,复杂度应为O(n*log(n))

您可以在此处找到有关Mergesort的一些信息: Mergesort

关于最佳排序算法时间复杂度的一些文章: Sorting algorithms

我无法找到给定方法的确切实现,但这里有一篇很棒的文章,您可以如何深入挖掘Objective-C中Arrays的实现并查看方法实现: Exposing NSMutableArray