运行 这个特定 For 循环的时间

Run time of this specific For loop

我正在研究一个算法问题,想检查一下我对这条特定行的 运行 时间的直觉:

for i= floor(A.heapsize/2)+1 to A.heapsize //iterate through leaves of heap

其中 A.heap-size 与 n 相同,for 循环中的其他所有内容都需要常数时间。是否在 O(n) 时间内循环 运行?

是的,是O(n)。常数因子从大 O 表示法中删除,无论它是大于一还是小于一。在您的情况下,常数因子是 ½。

Big-O 不是 运行时。运行时间只能通过基准测试来确定。相反,它是算法复杂度;虽然两者相关(AC 有效地定义了 RT 如何随输入大小增长),但它们不可互换。

话虽如此,跨范围的单个 for 循环总是 O(n)。请注意,任何常量修改(例如,仅遍历列表的一半)不会更改操作的 AC,即使它显然使操作花费更少的时间(AC 和 RT 为何不同的示例);迭代次数仍然随着heapsize.

的值线性增长