我对C#和整体编程非常新鲜(特别是在算法上)。
我正在尝试学习算法的基础,我真的不知道回答某些问题:
我需要回答每一个,复杂性是多少
现在我回答了以下问题:
1) O(2N)
2) O(1)?我在这里猜到了,不知道为什么O(1)
3)无法告诉
4)无法告诉
5) O(N ^ 2)?在这里做了一个很好的猜测
我真的很感激任何帮助,然后解释。
答案 0 :(得分:0)
此循环从0计数到 n -1,即 n 次迭代。每次迭代执行2个基本操作。因此,执行总共2 * n *个基本操作。 O (2 * n *)与 O ( n )相同,因为我们忽略了常量。
此循环从100倒数到1,即99次迭代。每次迭代执行2个基本操作。因此,总共执行198个基本操作。 O (198)与 O (1)相同,因为我们忽略了常量。
外部循环计数从100到楼层( n / 2)-1。如果 n <200,则不执行迭代,并且运行时间为 O (1),用于循环初始化和测试。否则 n ≥200,然后执行大约( n / 2)-100次迭代。内循环执行 n 次,每次执行1次基本操作。因此总共大约(( n / 2)-100)×n×1 =( n 2 )/ 2 - 100n基本操作执行, O ( n 2 )。
第一个循环总共执行 n 基本操作。第二个和第三个循环合并执行 n 2 基本操作。因此,执行总共 n + n 2 基本操作。 n 2 术语的功效高于 n 术语,因此整体复杂度只是 O (< EM>名词 2 )。
外部循环执行 n 次。每个外循环迭代,内循环执行 n 2 次。因此总共执行 n 3 基本操作,即 O ( n 3 )。