如果我将合并排序应用于已经排序的数组,那么时间复杂度是多少?
答案 0 :(得分:1)
通常的合并排序仍将O(nlogn)
用于排序的数据。
但是有natural merge sort变体为排序数组提供线性复杂度。
请注意,自然合并排序还可以为任意数据提供O(nlogn)
,而与迭代排序相比,它对已排序的数据表现良好,但在最坏的情况下变为二次方
答案 1 :(得分:0)
根据Wikipedia page for merge sort,合并排序具有O(n log n)
的最佳和最差情况。给定已排序数组的输入,合并排序仍将需要与其他数组一样经过相同的排序过程。结果,即使对于已排序的数组,运行时间仍将为O(n log n)
。
对于已经排序的数组,还有其他一些实际优于合并排序的算法,例如插入排序。对于插入排序,已排序数组的性能为O(n)
,即线性。