在无序数组中找到最小值的时间复杂度

时间:2018-10-27 11:22:54

标签: algorithm

我正在读wiki page,上面写着:

  

但是,在无序数组中找到最小值不是   恒定时间操作,因为扫描数组中的每个元素是   确定最小值所需的。因此它是线性的   时间运算,需要O(n)时间。如果元素数量已知   预先并且不会改变,但是,这样的算法仍然可以   可以说是恒定时间运行。

如果提前知道元素数量,我将无法理解时间复杂度如何变化?还会不是O(n)吗?

1 个答案:

答案 0 :(得分:0)

看看Big-O的定义:

  

f(n)= O(g(n))表示存在正常数c和k,因此对于所有n≥k,0≤f(n)≤cg(n)。 c和k的值必须对于函数f是固定的,并且不得依赖于n。

如果我们知道数组的大小(例如100),很显然,我们将花费100步来检查数组中的最小值是什么。

因此,每n≥1,c = 100:

100≤1 * 100

(根据定义)其含义:

100 = O(1)

所以时间复杂度变为O(1)。

如果仍然无法理解,请尝试对n大小的数组进行证明。