伪代码如下。如何计算该程序的时间复杂度
Algorithm MinValue(A, n):
Input: An integer array A of size n //1
Output: The smallest value in A
minValue <- A[0] //1
for k=1 to n-1 do //n
if (minValue > A[k]) then //n-1
minValue <- A[k] //1
return minValue //1
所以,它是1 + 1 + n + n-1 + 1 + 1 = 2n + 3,是否正确?
这是一个更简单的程序 算法MaxInt(a,b):
Input: Two integers a and b //1
Output: The larger of the two integers
if a > b then //1
return a //1
else
return b. // 1
总操作数= 4,是否正确?
有人能告诉我正确的答案吗?感谢
答案 0 :(得分:0)
你很亲密。
在第一个程序中,minValue <- A[k]
执行的次数在最坏的情况下可能是n-1
(如果数字按降序排序)。
因此,操作总数受1 + n-1 + n-1 + n-1 + 1 = 3 * n-1 = O(n)的约束。
对于第二个程序,执行return a
或return b
。因此,操作次数为2(条件+所选的返回语句)。
答案 1 :(得分:0)
条件语句的复杂性最大程度上是分支的复杂性,加上条件表达式的复杂性。