# Algorithm Analysis

### Program Analysis

2.1. What value is returned by the following function? Express your answer as a function of ${\displaystyle n}$. Give the worst-case running time using the Big Oh notation.
```  mystery(n)
r:=0
for i:=1 to n-1 do
for j:=i+1 to n do
for k:=1 to j do
r:=r+1
return(r)
```

2.2. What value is returned by the following function? Express your answer as a function of ${\displaystyle n}$. Give the worst-case running time using Big Oh notation.
```   pesky(n)
r:=0
for i:=1 to n do
for j:=1 to i do
for k:=j to i+j do
r:=r+1
return(r)
```

2.3. What value is returned by the following function? Express your answer as a function of ${\displaystyle n}$. Give the worst-case running time using Big Oh notation.
```   prestiferous(n)
r:=0
for i:=1 to n do
for j:=1 to i do
for k:=j to i+j do
for l:=1 to i+j-k do
r:=r+1
return(r)
```

2.4. What value is returned by the following function? Express your answer as a function of ${\displaystyle n}$. Give the worst-case running time using Big Oh notation.
```  conundrum(${\displaystyle n}$)
${\displaystyle r:=0}$
for ${\displaystyle i:=1}$ to ${\displaystyle n}$ do
for ${\displaystyle j:=i+1}$ to ${\displaystyle n}$ do
for ${\displaystyle k:=i+j-1}$ to ${\displaystyle n}$ do
${\displaystyle r:=r+1}$
return(${\displaystyle r}$)
```

2.5
2.6. Suppose the following algorithm is used to evaluate the polynomial
${\displaystyle p(x)=a_{n}x^{n}+a_{n-1}x^{n-1}+\ldots +a_{1}x+a_{0}}$
```   ${\displaystyle p:=a_{0};}$
${\displaystyle xpower:=1;}$
for ${\displaystyle i:=1}$ to ${\displaystyle n}$ do
${\displaystyle xpower:=x*xpower;}$
${\displaystyle p:=p+a_{i}*xpower}$
end
```
1. How many multiplications are done in the worst-case? How many additions?
2. How many multiplications are done on the average?
3. Can you improve this algorithm?

2.7. Prove that the following algorithm for computing the maximum value in an array ${\displaystyle A[1..n]}$ is correct.
```  max(A)
${\displaystyle m:=A[1]}$
for ${\displaystyle i:=2}$ to n do
if ${\displaystyle A[i]>m}$ then ${\displaystyle m:=A[i]}$
return (m)
```

2.8
2.9
2.10
2.11
2.12
2.13
2.14
2.15
2.16
2.17
2.18
2.19
2.20
2.21
2.22
2.23
2.24
2.25
2.26
2.27
2.28
2.29
2.30
2.31
2.32
2.33
2.34
2.35
2.36

2.37
2.38
2.39
2.40
2.41
2.42
2.43

2.44
2.45
2.46
2.47

### Interview Problems

2.48
2.49
2.50
2.51
2.52
2.53
2.54
2.55

Back to Chapter List