A
数组是Integer
的数组,每个值只能出现一次。
B
数组是Boolean
的数组。
B[k] is True when A[k] > A[k+1]
B[k] is False when A[k] < A[k+1]
是否可以编写一个使用复杂度小于bool
的Tetta(n*logn)
数组的sort Algorithm?
不可能。让我们用contradiction
证明一下事实:
在一般情况下,具有[[任意整数的A
数组(为了使基数排序不可能而任意的数组)我们不能比O(N * log(N))
。 假设问题中所述,O(N * log(N))
和A
数组的算法要比B
好,比如说具有O(F(N))
的时间复杂度;因此,具有任意的A
数组,我们可以build具有B
时间复杂度的相应O(N)
。然后组合的复杂度是O(N) + O(F(N)) = O(F(N))
B
数组,所以F(N)
不能比O(N)
好[[更好](这就是为什么我们可以删除O(N)
:O(N) + O(F(N)) = O(F(N))
)的原因。到目前为止,到目前为止,我们已经成功地对arbitrary[
A
数组具有时间复杂性进行了排序O(F(N)) < O(N * log(N))
我们有矛盾,所以假设有算法是错误
。