#include <stdio.h>
int find_peak_element(int arr[], int low, int high, int len) {
int mid = (low + high) / 2;
if ((mid == 0 || arr[mid - 1] <= arr[mid]) && (mid == len - 1 || arr[mid + 1] <= arr[mid])) {
return mid;
}
if (mid - 1 >= 0 && arr[mid - 1] > arr[mid]) {
return find_peak_element(arr, low, mid - 1, len);
}
return find_peak_element(arr, mid + 1, high, len);
}
int main(void)
{
int arr[] = { 5, 6, 9, 5, 1, 4, 1 };
int len = sizeof(arr) / sizeof(arr[0]);
int i = find_peak_element(arr, 0, len - 1, len);
printf("%i\n", arr[i]);
return 0;
}
/*
run:
9
*/