java如何计算以下算法的复杂度
我试图计算这段代码的时间复杂度,它对一个数组的奇数求和。我已经做了两种方法,现在我需要计算顺序复杂度O(n)
这是由弱后条件完成的
private static int sumaImparDebilit(int t[], int desde, int hasta) {
if (desde==hasta) {
if ((t[desde] % 2) == 1) {
return t[desde];
}
return 0;
}
if (t[desde]%2 == 1) {
return (t[desde] + sumaImparDebilit(t,(desde+1),hasta));
}
return (sumaImparDebilit(t,(desde+1),hasta));
}
这一步是通过强先决条件完成的
private static int sumaImparFortalec(int t[], int hasta, int limite, int parcial) {
if (hasta <= limite) {
if ((t[hasta] % 2) == 1) {
return sumaImparFortalec(t,(hasta + 1),limite,(parcial + t[hasta]));
} else {
return sumaImparFortalec(t,(hasta + 1),limite,(parcial));
}
}
else {
return parcial;
}
}
# 1 楼答案
我不知道你所说的“弱”和“强”条件是什么意思,但它们都有时间复杂性O(n)和递归(没有充分的理由)
这当然是最简单、最快的: