Intro to Algorithms: Peak Finding Algorithm 1

in technology •  7 years ago 

When we design an algorithm we are majorly concerned with two things:

  1. Accuracy or correctness of the algorithm
  2. Time complexity of the algorithm (in other words the worst case scenario in terms of time taken)

Let me first define what is a peak, then we will try an find ways to "Find a peak if it exists"

Peak in 1D array

Consider a 1D array of n elements: A = [ a1, a2, ...., an ], then ith element ai is a peak iff :

ai-1 le ai AND ai+1 le ai

A straightforward algorithm to do this would be:

  1. Start from array index = 0
  2. Compare the element with its right element, if it is greater than or equal to the right element. It is the peak.
  3. Else increase index repeat the steps 2 and 3 till peak is found or all elements of the array are traversed.
  4. The last element is the peak.

Python Code

  import numpy as np 
  n = 20  # Number of elements in the array
  # Generate a random array of 20 integers within range [0, 100]
  a = np.random.randint(100, size = n)  
  for i in range(n-1):
      if a[i] >= a[i+1]:
             print("Peak is {} at position {}".format (a[i], i))
             break
      elif i == n-2:
             print("Peak is {} at position {}".format (a[i+1], i+1))

Time Complexity

In the above algorithm we can see that in worst case scenario (when the peak is the last element of the array) we need to make n comparisions, thus the time complexity in Big O notation is O(n)

Abbrevations:

  • iff if and only if
  • le less than or equal to

To be Contd...

For any programming job, knowledge of algorithms is a must. Thus, comes this post, a follow-up to the MIT 6.006 Introduction to Algorithms course. I will continue writing about different algorithms taught in the course and their analysis. I hope they help someone getting a better understanding and finally a job.

Your upvotes, and comments will help me stay motivated. Follow me to stay updated
Cheers
Seben OfNine

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!