I\'m pretty new to this stuff and I need your help.
I should build an efficient simple algorithm which returns the maximum value in an array with size of n which contain
Best case - finding the max element as the first (O(1)), worst case - it is the last element checked (O(n)).
The tricky part is the average case.
To find the average case - we need the expected number of iterations!
Since you can stop after you find the maximum, we can split the problem into two parts:
[0,n-1): Since on average (assuming uniform independent distribution for each element) - the number n has probability 1/n to be in each place, then the expected number of iterations for this part is 1/n + 2*((n-1)/n)/n + 3 * ((n-1)/n)^2/n + ... + (n-1) * ((n-1)/n)^(n-2)/n 1
n: so you need to add to the above n* ((n-1)/n)^(n-1), which is O(n) as well (lim to infinity is 1/e * n).This totals in O(n) average time solution.
(1): The formula for each element is j*((n-1)/n)^(j-1) * (1/n) because:
j - for the number of elements checked (number of iterations)((n-1)/n)^(j-1) - Probability that there is no n in the previous elements(1/n) - Probability this number is n.