简单的时间复杂度计算

时间:2015-11-28 15:17:03

标签: c# time-complexity

我是Time Complexity的新手,现在开始解决问题, 我不确定我是否正确,如果我这样做,请告诉我,如果没有, 你是如何计算它的。

This is the problem

我将最差情况计算为6n+5,将一般情况计算为O(n),是否正确?

2 个答案:

答案 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或将其除以某个其他数字并不重要,那当然适用于某些非常大的数字,因为计算机没有无限。