我需要知道时间的复杂性 NSArray类的 sortedArrayUsingComparator 函数。一个消息来源会很棒,因为我可能会在我的学士论文中提到它。 我正在按距离到当前位置对一系列位置进行排序。
我能找到的唯一答案是有人说它至少是T(n)= O(n)但可能是T(n)= O(n log n)
我怎么知道?
答案 0 :(得分:4)
答案 1 :(得分:1)
要对数组进行排序,您必须至少查看每个肯定O(n)
的元素。有几篇数学论文向您展示,例如,O(n*log(n))
之类的Mergesort
可能不是更好的排序算法。由于比较器实现了Mergesort
,我认为对于最佳,平均和最差情况,复杂度应为O(n*log(n))
。
您可以在此处找到有关Mergesort
的一些信息:
Mergesort
关于最佳排序算法时间复杂度的一些文章: Sorting algorithms
我无法找到给定方法的确切实现,但这里有一篇很棒的文章,您可以如何深入挖掘Objective-C中Arrays的实现并查看方法实现: Exposing NSMutableArray