有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    我不知道你所说的“弱”和“强”条件是什么意思,但它们都有时间复杂性O(n)和递归(没有充分的理由)

    这当然是最简单、最快的:

    int sum = 0;
    for (int i = 0; i < t.length; i++)
        if (t[i] % 2 == 1)
            sum += t[i];