1 Asymptotics
(a) We have a function
findMax
that iterates through an unsorted
int
array once and returns the
maximum element found in that array. Give the tightest lower (Ω(
·
)) and upper bounds (
O
(
·
)) of
findMax
in terms of
N
, the length of the array. Is it possible to define a Θ(
·
) bound for
findMax
?
(b) Give the worst case and best case runtime in terms of
M
and
N
. Assume
ping
is in Θ(1) and returns
an
int
.
1
for
(
int
i = N; i > 0; i--) {
2
for
(
int
j = 0; j <= M; j++) {
3
if
(ping(i, j) > 64)
break
;
4
}
5
}
(c) Below we have a function that returns true if every int has a duplicate in the array, and false if there
is any unique int in the array. Assume
sort(array)
is in Θ(
N
log
N
) and returns
array
sorted.
1
public static boolean
noUniques(
int
[] array) {
2
array = sort(array);
3
int
N = array.length;
4
for
(
int
i = 0; i < N; i += 1) {
5
boolean
hasDuplicate =
false
;
6
for
(
int
j = 0; j < N; j += 1) {
7
if
(i != j && array[i] == array[j]) {
8
hasDuplicate =
true
;
9
}
10
}
11
if
(!hasDuplicate)
return false
;
12
}
13
return true
;
14
}
Give the worst case and best case runtime in Θ(
·
) notation, where
N
=
array.length
.