数组中最长非递减段的运行时间

时间:2014-03-09 19:00:08

标签: java time-complexity asymptotic-complexity

我在java中有一个方法可以找到数组中最长的非递减段。 然而,该方法作为赋值的一部分,我需要使用该方法根据O(f(n))(即上限)和Ω(g(n))找到大小为n个元素的运行时间(即下限)。有人能帮我吗? 提前谢谢!!

    public int maxAscent(int A[])
    {
int num = 0;
int count = 1;
int i;
for(i = 0; i < A.length-1; i++)
    if(A[i] <= A[i+1])
        count++;
    else
    {
        if(count > num)
            num = count;
        count = 1;
    }
if(count > num)
    num = count;
return num;

}

1 个答案:

答案 0 :(得分:0)

上限和下限以及Big O与循环有关。要问的问题是你的代码中有哪些循环?在最坏的情况和最佳情况下,每个循环运行多少次?如果循环包含另一个循环,则将它们的最佳情况和最坏情况相乘。

对于您的特定程序,有一个循环,它从0到n-1。没有提前,所以你最好的情况,最坏情况和平均情况都有相同的价值。

那将是“n”运算,所以O(n),Ω(n)和ø(n)。