Peak element Java
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
import java.util.*; import java.lang.*; import java.io.*; class PeakElement { // A binary search based function // that returns index of a peak element static int findPeakUtil( int arr[], int low, int high, int n) { // Find index of middle element // (low + high)/2 int mid = low + (high - low) / 2; // Compare middle element with its // neighbours (if neighbours exist) if ((mid == 0 || arr[mid - 1] <= arr[mid]) && (mid == n - 1 || arr[mid + 1] <= arr[mid])) return mid; // If middle element is not peak // and its left neighbor is // greater than it, then left half // must have a peak element else if (mid > 0 && arr[mid - 1] > arr[mid]) return findPeakUtil(arr, low, (mid - 1), n); // If middle element is not peak // and its right neighbor // 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() static int findPeak(int arr[], int n) { return findPeakUtil(arr, 0, n - 1, n); } // Driver method public static void main(String[] args) { int arr[] = { 1, 3, 20, 4, 1, 0 }; int n = arr.length; System.out.println( "Index of a peak point is " + findPeak(arr, n)); } } Index of a peak point is 2
Comments
Post a Comment