Time complexity 这些循环的大Oh有什么不同?
三个For循环: 我对这个大的Oh东西是相当陌生的,我很难看到这三个循环之间的复杂性差异 它们似乎都小于O(n^2),但大于O(n) 有人能给我解释一下如何评估这些循环的复杂性吗 谢谢 有人能给我解释一下如何评估这些循环的复杂性吗 从明确定义问题开始。链接的图像没有什么可继续的,所以让我们开始编东西:Time complexity 这些循环的大Oh有什么不同?,time-complexity,Time Complexity,三个For循环: 我对这个大的Oh东西是相当陌生的,我很难看到这三个循环之间的复杂性差异 它们似乎都小于O(n^2),但大于O(n) 有人能给我解释一下如何评估这些循环的复杂性吗 谢谢 有人能给我解释一下如何评估这些循环的复杂性吗 从明确定义问题开始。链接的图像没有什么可继续的,所以让我们开始编东西: 正在更改的参数是整数n C是大于1的常数正整数值 循环变量是整数 整数不会溢出 加法、比较、赋值、乘法和索引的成本都是不变的 我们要寻找的复杂性的代价是最内部循环的常量操作的代价;在循环变量的
- 正在更改的参数是整数n
- C是大于1的常数正整数值
- 循环变量是整数
- 整数不会溢出
- 加法、比较、赋值、乘法和索引的成本都是不变的
- 我们要寻找的复杂性的代价是最内部循环的常量操作的代价;在循环变量的实际计算中,我们忽略了所有的加法等等
- 在每种情况下,最里面的语句都是相同的,并且成本是恒定的,所以我们将该成本称为成本的“一个单位”
- 第一次运行“j”回路的成本为1个单位
- “j”回路第二次运行的成本为C个单位
- “j”回路第三次运行的成本为C*C单位
- 李>
- 正在更改的参数是整数n
- C是大于1的常数正整数值
- 循环变量是整数
- 整数不会溢出
- 加法、比较、赋值、乘法和索引的成本都是不变的
- 我们要寻找的复杂性的代价是最内部循环的常量操作的代价;在循环变量的实际计算中,我们忽略了所有的加法等等
- 在每种情况下,最里面的语句都是相同的,并且成本是恒定的,所以我们将该成本称为成本的“一个单位”
- 第一次运行“j”回路的成本为1个单位
- “j”回路第二次运行的成本为C个单位
- “j”回路第三次运行的成本为C*C单位
- 李>
记住,你不需要计算出确切的成本函数。你只需要计算出主要的成本。提示:我们对C*C*C了解多少。。。在外循环的最后一次运行时?您可以使用西格玛符号分析循环。注意,为了研究循环(a)的渐近行为,常数
C
仅描述循环中的线性增量,我们可以在分析中自由选择C
的任何值(因为内循环只是一个固定的迭代次数),但假设C>0
(整数)。因此,对于循环(a),选择C=1
。对于循环(b),我们将包括C,但是假设C>1
(整数)。如果循环(b)中的C=1
,它将永远不会终止,因为i
永远不会递增。最后,使用costO(1)
将所有循环中最内层的操作定义为我们的基本操作
西格玛符号分析如下:
因此
您可以使用Sigma符号分析循环。注意,为了研究循环(a)的渐近行为,常数
C
仅描述循环中的线性增量,我们可以在分析中自由选择C
的任何值(因为内循环只是一个固定的迭代次数),但假设C>0
(整数)。因此,对于循环(a),选择C=1
。对于循环(b),我们将包括C,但是假设C>1
(整数)。如果循环(b)中的C=1
,它将永远不会终止,因为i
永远不会递增。最后,使用costO(1)
将所有循环中最内层的操作定义为我们的基本操作
西格玛符号分析如下:
因此
也许你可以(1)张贴你感到困惑的代码文本,(2)提出一个问题。你说你很困惑,你说你不知道一些事情之间的区别;这些是事实,不是问题。你到底在问什么?我做了一些改变。很抱歉。也许你可以(1)发布你感到困惑的代码文本,以及(2)问一个问题。你说你很困惑,你说你不知道一些事情之间的区别;这些是事实,不是问题。你到底在问什么?我做了一些改变。很抱歉。
(a) is O(n)
(b) is O(n)
(c) is O(n*log(n))