如何系统地确定函数的大O?

时间:2015-12-14 22:49:22

标签: java big-o time-complexity

他们是一种有条不紊的方法吗?就像给我这个功能一样:

public static int f2(int[] arr, int lo, int hi) 
{
   // N = initial value of (hi-lo+1) of 1st activation of f2
   if(lo == hi) 
        return lo;
   if(arr[hi] >= arr[lo])
       return f2(arr, lo+1, hi);
    return f2(arr, lo, hi-1);
}

我所看到的许多资源都没有告诉你如何获得你从未见过的功能的记号。有没有办法非直观地做到这一点?如果是这样,我将如何获得大O的最坏情况运行时间?感谢。

1 个答案:

答案 0 :(得分:3)

O {n} nhi - lo + 1,在每次递归中,lohi之间的差距减小1.

我怀疑通常无法解决这个问题,因为最坏的情况与尝试解决Halting problem相同。