我正在读wiki page,上面写着:
但是,在无序数组中找到最小值不是 恒定时间操作,因为扫描数组中的每个元素是 确定最小值所需的。因此它是线性的 时间运算,需要O(n)时间。如果元素数量已知 预先并且不会改变,但是,这样的算法仍然可以 可以说是恒定时间运行。
如果提前知道元素数量,我将无法理解时间复杂度如何变化?还会不是O(n)吗?
答案 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大小的数组进行证明。