gpt4 book ai didi

algorithm - 以下代码片段的时间复杂度是多少?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:42:53 25 4
gpt4 key购买 nike

设 A[1, …n] 是一个数组,每个位置存储一个位(1 或 0),f(m) 是一个时间复杂度为 Θ(m) 的函数。考虑以下用类 C 语言编写的程序片段:

counter = 0;
for (i=1; i<=n; i++)
{ if a[i] == 1) counter++;
else {f (counter); counter = 0;}
}

我只能处理所有位都为 1 的最佳情况,因此时间复杂度将为 Θ(n),但我在确定所有位为 0 或 0 或超过一半的位是 0,问题是函数的复杂性让我感到困惑,如果我试图忽略它那么复杂性将是 Θ(n) 本身,请指导我解决这个问题。

最佳答案

传递给 f 的所有计数器的总和最多为 n,因此调用 f 的总成本为 O(n)。这是因为 f(m) 具有时间复杂度 Theta(m),这意味着某些 c 的成本 f(m) < c*m,因此可以将调用 f 的成本限制为输入 m_1、m_2、...、m_k c*(m_1 + m_2 + ... + m_k).

每次循环都会完成一些工作,因此总成本也低于 n 的倍数。因此总成本为 Theta(n)。

关于algorithm - 以下代码片段的时间复杂度是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34572607/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com