是否可以通过比O(n)时间复杂度更快的速度找到未排序整数数组的最小元素。 空间复杂性不是问题。
答案 0 :(得分:19)
不,这是不可能的。给定一个任意数组的元素,你必须至少查看一次每个元素,以明确地说明你找到了最小元素。这意味着必要的时间复杂度为Ω(n)
(see here for more information on Big Omega notation),这意味着*找到最小元素的任何算法都将至少进行c * n
次操作,其中c
是常量(在这种情况,c >= 1
)。
换句话说,如果算法花费的n
次操作少于{{1}},那么算法中至少必须有一个算法没有通过的元素。由于我们没有关于这个元素的信息(数组是任意的),我们不能说这个元素不小于算法声明的最小元素。所以算法不正确。
*请注意,这不是Big-Omega符号的正式含义,但它得到了重点。您可以阅读正式定义here。