如何计算条件语句和循环的时间复杂度

时间:2018-03-20 11:24:22

标签: algorithm time-complexity big-o

伪代码如下。如何计算该程序的时间复杂度

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,是否正确?

有人能告诉我正确的答案吗?感谢

2 个答案:

答案 0 :(得分:0)

你很亲密。

在第一个程序中,minValue <- A[k]执行的次数在最坏的情况下可能是n-1(如果数字按降序排序)。

因此,操作总数受1 + n-1 + n-1 + n-1 + 1 = 3 * n-1 = O(n)的约束。

对于第二个程序,执行return areturn b。因此,操作次数为2(条件+所选的返回语句)。

答案 1 :(得分:0)

条件语句的复杂性最大程度上是分支的复杂性,加上条件表达式的复杂性。