gpt4 book ai didi

c - 这个循环的时间复杂度

转载 作者:太空狗 更新时间:2023-10-29 15:31:48 25 4
gpt4 key购买 nike

for (int i=0; i<n; i++)
{
int j = 2;
while (j<i)
j = j * j;
}

我认为它的 n*log(n) 作为第一个循环迭代 n 次,但我不确定第二个循环。

最佳答案

由于这个问题具有家庭作业的所有特点,我不会直接给出最终答案,而是给你一些关于如何自己到达那里的指导。

您是对的,您需要对内部循环的迭代次数进行限制以确定总体限制。要对此进行评估,请考虑值的形式 j将接受该循环的连续迭代:2、4、16、256 等。根据循环迭代次数为该数字编写一个封闭公式很有用。

很明显,该序列由 2 的递增幂组成,但不是线性递增的幂。我们有 21, 22, 24, 28, ....此时,不过,您应该能够识别该模式,并能够为 j 的值编写一个公式。在k之后内循环的第 th 次迭代,对于 k = 0, 1, 2, 3 .... 让 Inner(k) 指定该公式. (具体公式留作习题。)

那么对于 i 的给定值,将执行多少次内循环迭代?变量 j在循环迭代时采用 Inner(k) 的值,循环在 j >= i 时终止。 ,因此迭代次数是最小值 k 使得 Inner(k) 至少与 i 一样大,并且该循环的最大迭代次数是最小 k 使得 Inner(k) 至少为 n .现在,估计nInner(k),并求解 k

其余的细节再次作为练习。

关于c - 这个循环的时间复杂度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40831898/

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