给定一个改变的合并排序算法,如果数组已经排序,算法将返回数组而不是再进行2次递归调用。假设我们在一个数组上运行新算法,其中的每个值都恰好是n / log(n)次。 (为此,数组包含log(n)不同的值)。
该算法的时间复杂度是多少?
如果您怀疑该数组具有非常少的不同值,则扫描数组以提取这些值,对它们进行排序并计算它们所花费的时间比在阵列上执行完全合并排序要少得多:
因此,时间复杂度可以降低到O(N)。
但请注意:
总之,在特殊情况下可以有效地降低复杂性,但在一般情况下它很棘手。