伪代码如下如何计算这个程序的时间复杂度
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,对吗?
有人能告诉我正确的答案吗?谢谢
最佳答案
你很亲密。
在第一个程序中,执行minValue <- A[k]
的次数可以在最坏的情况下n-1
(如果数字按降序排序)。
因此,操作总数受1+n-1+n-1+n-1+1=3*n-1=o(n)的约束。
对于第二个程序,执行return a
或return b
因此,操作数是2(条件+所选的返回语句)。
关于algorithm - 如何计算条件语句和循环的时间复杂度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49382969/