algorithm - 嵌套循环的复杂性(递推关系)

标签 algorithm complexity-theory time-complexity

Algorithm-1 (A:array[p..q] of integer)
    sum, max: integer
    sum = max = 0
    for i = p to q 
        sum = 0
        for j = i to q 
            sum = sum + A[j]
            if sum > max then
                max = sum
    return max

嵌套循环执行了多少次?

我知道第一个 for 循环的复杂度为 O(n),整个算法的总复杂度为 O(n ^2)。但是,我需要内循环的确切执行次数,以便通过递归关系证明这一点。

最佳答案

不就是 Sum(i = 1 -> n, i),等于 n(n+1)/2 吗?

在你的例子中,n = q-p+1,所以你得到 (q-p+1)(q-p+2)/2

展开它 - 如果我做对了 - 你会得到 (q^2-qp+2q-pq+p^2-2p+q-p+2)/2 = (q^2+p^2-2qp+3q-3p+2)/2

关于algorithm - 嵌套循环的复杂性(递推关系),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13170042/

相关文章:

Javascript 语法 : variable declaration with "<<" or ">>"

java - 功能的大O表示法

c - 这个算法的运行时间是多少?

algorithm - NP难?在线扑克合谋检测的算法复杂性?

algorithm - 图灵机中的时间复杂度与空间复杂度

algorithm - 在 O(nlogm) 时间内计算两个未排序数组的并集和交集

java - 此处用 Java 实现的二叉树中 LCA 的时间复杂度是多少

algorithm - 递归创建对象的空间复杂度

c - 在纯 C 语言中,不使用 strlen 或任何使用 strlen 的库函数,如何确定一个字符串是否包含在另一个字符串中?

c++ - 在哪里可以找到不同 STL 容器复杂性(性能)的比较?