Peak element Python

PROGRAM TO FIND THE PEAK ELEMENT IN AN ARRAY


An array element is a peak if it is NOT smaller than its neighbours. For corner elements, we need to consider only one neighbour.


# A binary search based function 
# that returns index of a peak element
def findPeakUtil(arr, low, high, n):
      
     # Find index of middle element
     # (low + high)/2 
     mid = low + (high - low)/2 
     mid = int(mid)
      
    # Compare middle element with its 
    # neighbours (if neighbours exist)
    if ((mid == 0 or arr[mid - 1] <= arr[mid]) and 
        (mid == n - 1 or arr[mid + 1] <= arr[mid])):
        return mid
  
  
    # If middle element is not peak and 
    # its left neighbour is greater 
    # than it, then left half must 
    # have a peak element
    elif (mid > 0 and arr[mid - 1] > arr[mid]):
        return findPeakUtil(arr, low, (mid - 1), n)
  
    # If middle element is not peak and
    # its right neighbour is greater
    # than it, then right half must 
    # have a peak element
    else:
        return findPeakUtil(arr, (mid + 1), high, n)
  
  
# A wrapper over recursive 
# function findPeakUtil()
def findPeak(arr, n):
  
    return findPeakUtil(arr, 0, n - 1, n)
  
  
# Driver code
arr = [1, 3, 20, 4, 1, 0]
n = len(arr)
print("Index of a peak point is", findPeak(arr, n))

OUTPUT
Index of a peak point is 2

Comments

Popular posts from this blog

Solve the Sudoku Python

Solve the Sudoku Java

Find Duplicates Java