我需要知道NSArray类的 sortedArrayUsingComparator函数的时间复杂度。一个消息来源会很棒,因为我很可能在我的学士论文中提到它。 我正按距离排序位置数组到当前位置。sortedArrayUsingComparator的时间复杂度(大O)是什么? iOS/OSX
我能找到的唯一答案是有人说这是至少T(N)= O(N),但有可能T(N)=为O(n log n)的
我怎么会知道肯定?
我需要知道NSArray类的 sortedArrayUsingComparator函数的时间复杂度。一个消息来源会很棒,因为我很可能在我的学士论文中提到它。 我正按距离排序位置数组到当前位置。sortedArrayUsingComparator的时间复杂度(大O)是什么? iOS/OSX
我能找到的唯一答案是有人说这是至少T(N)= O(N),但有可能T(N)=为O(n log n)的
我怎么会知道肯定?
基于比较成本的排序算法至少为O(n log n)。看到这个link
由于其名称sortedArrayUsingComparator
显示,该方法是基于比较,所以它会花费至少O(n log n)。
那么要排序数组,你必须至少看看每个元素是肯定的O(n)
。有几篇数学论文向您展示,例如,之类的O(n*log(n))
不能有更好的排序算法。由于比较器实现了Mergesort
我认为复杂性应该是O(n*log(n))
最好,平均和最坏的情况。
你可以找到一些有关Mergesort
这里: Mergesort
而且有些文章关于最好的排序算法的时间复杂度:
我找不到给定方法的具体实现,但在这里是一篇很好的文章,您可以更深入地了解Objective-C中的数组实现以及查看方法实现: Exposing NSMutableArray