如何进行大O分析

时间:2015-12-04 21:08:01

标签: algorithm time-complexity complexity-theory

以下是我的代码。

如何对intDiv(m-n, n)执行大O 分析,m& n是两个随机输入?

intDiv(int m,  int n) {

   if(n>m)
       return 0;

   else
       return 1 + intDiv(m-n, n); 

}      //this code finds the number of times n goes into m

2 个答案:

答案 0 :(得分:1)

取决于mn的值。通常,任何一对(m,n)所涉及的步数,使得n,m> = 0都是 integer_ceil(m / n)

因此,上述算法的时间复杂度:O([m/n]),其中,[]代表数字的细胞。

答案 1 :(得分:0)

我认为这完全取决于nm。例如,如果n=1则为O(m)。当n=m/2时,它就是O(log(m))