确定时间复杂度

时间:2021-03-21 05:37:31

标签: java big-o

谁能帮忙确定这段代码的时间复杂度。这只是 O(1) 吗?如果不是,有人可以帮忙解释一下吗?我不是 100% 确定我的答案,所以我需要第二个意见,看看这个函数是否是 O(1)。

    public static void secMax(int[] arr)
    {
        int n = arr.length - 1;
       

        if (some condition not relate to n)
        {
           
            if(arr[a] * arr[b] > temp)
            {
                //print
            }
            else
            {
                //do something
            }
        }
        else
        {
            if(arr[y] * arr[x] > second)
            {
                //something
            }
            else
            {
                //something else
            }
        }
        
    }

3 个答案:

答案 0 :(得分:2)

它是 O(1)。您没有任何遍历数组的循环。而且您没有任何递归调用。您的方法只有很少的 if/else 条件。如果您仔细检查,您的方法只会执行固定数量的操作,并且不会因输入数组长度而异。所以时间复杂度是恒定的。

答案 1 :(得分:2)

它是 O(1)。该程序只是简单地通过一些条件语句从上到下流动。任何代码块都不会执行多次,因此具有恒定的复杂性。

答案 2 :(得分:1)

时间复杂度为 O(1),因为您不执行任何循环来遍历参数数组,也不执行递归调用