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.
OUTPUT
Index of a peak point is 2
# 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)) Index of a peak point is 2
Comments
Post a Comment