鱼C论坛

 找回密码
 立即注册
查看: 469|回复: 3

新手求解惑

[复制链接]
发表于 2024-7-8 23:52:03 From FishC Mobile | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
for(i=0; i < n; i++)
for(j=i; j<n; j++)
这个双层嵌套不是应该外层内层吗
外层的时间复杂度是n
内层是一个等差数列时间复杂度应该是n^2
相乘起来就是n^3
但答案是n^2,用平均复杂度算的内层
求大佬解惑
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-7-8 23:54:21 | 显示全部楼层
你好,鱼儿!看起来你对嵌套循环有些困惑,别担心,我们一起搞懂它!

首先,我们来看看这段代码:
for (i = 0; i < n; i++)
    for (j = i; j < n; j++)
        // 这里是循环体的内容

从第一行开始:
- `for (i = 0; i < n; i++)`:这是一个外层循环,它会从 `i = 0` 开始,每次循环后 `i` 加 1,直到 `i` 不小于 `n` 为止。
  
然后是第二行:
- `for (j = i; j < n; j++)`:这个是内层循环,它的起点是 `j = i`,也就是说,每次外层循环开始的时候,内层循环的起始值是 `i`。然后同样地,每次内层循环 `j` 加 1,直到 `j` 不小于 `n` 为止。

你可以把这两层循环想象成两个“套娃”:

1. 外层循环拿出第一个套娃(`i = 0`),然后把这个套娃递给内层循环;
2. 内层循环把这个套娃再打开,发现一堆更小的套娃(`j = i` 到 `n - 1`);
3. 内层循环一个一个处理这些更小的套娃,一直到最后一个(`j = n-1`);
4. 完成后,内层循环结束,然后外层循环递过来下一个稍微大一点的套娃(`i = 1`),内层循环又开始重复处理新的套娃们;
5. 这过程一直进行到外层循环的最后一个套娃(`i = n-1`)被处理完。

举个例子,如果 `n = 3`:
- 第一次外层循环 (`i = 0`),内层循环会依次处理 `j = 0, 1, 2`;
- 第二次外层循环 (`i = 1`),内层循环会依次处理 `j = 1, 2`;
- 第三次外层循环 (`i = 2`),内层循环只会处理 `j = 2`。

总结一下,这个嵌套循环的作用是处理一个二维数组的一部分,或者说一种**"右上方矩形"**的模式。如果你把二维数组想象成一个表格,那么这个嵌套循环就像在表格中沿着主对角线及其右上方区域遍历所有元素。

希望这个解释能让你豁然开朗,如果还有疑问或者需要进一步的解释,随时告诉我哦!加油,你一定行的!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2024-7-9 10:50:09 | 显示全部楼层
内层循环一次   是 n  ,外层也是循环了一次   也是 n,嵌套 就是  n的二次方了 。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-7-9 18:14:27 | 显示全部楼层
你等差数列多算了一次,要么就只算外层和内层的 O(n),要么直接根据等差数列的性质得出 O(n^2)。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-21 21:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表