我是Time Complexity的新手,现在开始解决问题, 我不确定我是否正确,如果我这样做,请告诉我,如果没有, 你是如何计算它的。
我将最差情况计算为6n+5
,将一般情况计算为O(n)
,是否正确?
答案 0 :(得分:0)
采取最常执行的指令。它是num = Random.Next (100)
(与其他人联系在一起)。它多久被执行一次? N次;这是O(N)。
您还可以使用其他指令的频率。我们会发现它并不重要。如果你这样做,你得到O(6N + 5),或者类似的东西(我会记录你的数,因为它没关系)。
如果你把东西加在一起,只保留最大的东西(当N很大时)。当N大时,6N> 1。 5,所以你只保留O(6N)。
丢弃常数乘数。所以你保留N并获得O(N)。
我们抛弃了大N的最大值,因为我们只关心大N的情况。对于大N,较小的东西变得无关紧要。
我们抛弃常数乘数,因为我们不关心精确的指令数,只是:当你加倍N的大小时,会发生什么时间?当我们三倍,四倍,你有什么,N的大小,会发生什么?它是否乘以6或任何其他常数对此无关紧要 - 因此我们抛弃常数乘数。
答案 1 :(得分:0)
是和否。它位于O(n)
,因为您迭代for循环n
次。作业和声明是O(1)
- 常量。
我不知道你从6n + 5
取得了什么。前三行只完成一次。在最坏的情况下,循环迭代n次,每个数字大于参数。所以你有4*O(1)
。由于最后一个语句不在循环中,因此它也只执行一次。总共3 + 4*n + 1 = 4n + 4
。占主导地位的术语是4n
,删除常量并获得O(n)
时间。
通过统治术语意味着对于n
到无穷大,如果将它乘以2,3,4
或将其除以某个其他数字并不重要,那当然适用于某些非常大的数字,因为计算机没有无限。