我在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;
}
答案 0 :(得分:0)
上限和下限以及Big O与循环有关。要问的问题是你的代码中有哪些循环?在最坏的情况和最佳情况下,每个循环运行多少次?如果循环包含另一个循环,则将它们的最佳情况和最坏情况相乘。
对于您的特定程序,有一个循环,它从0到n-1。没有提前,所以你最好的情况,最坏情况和平均情况都有相同的价值。
那将是“n”运算,所以O(n),Ω(n)和ø(n)。