Advertisement
informaticage

peak finding

May 24th, 2021
912
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.72 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. #define LEN 10
  6.  
  7. int find_peak(int *arr, size_t length);
  8.  
  9. int main(void) {
  10.   int arr[LEN];
  11.  
  12.   srand(time(NULL));
  13.   for (size_t i = 0; i < LEN; i++) {
  14.     arr[i] = rand() % 16 + 1;
  15.   }
  16.  
  17.   printf("[ ");
  18.   for (size_t i = 0; i < LEN; i++) {
  19.     printf("%d ", arr[i]);
  20.   }
  21.   printf("]\n");
  22.  
  23.   printf("Found peak: %d", find_peak(arr, LEN));
  24.   return 0;
  25. }
  26.  
  27. int find_peak(int *arr, size_t length) {
  28.   size_t i = 0, j = length - 1;
  29.  
  30.   while (i < j) {
  31.     size_t mid = i + (j - i) / 2;
  32.  
  33.     if (arr[mid] >= arr[mid + 1] && arr[mid] >= arr[mid - 1])
  34.       return arr[mid];
  35.  
  36.     if (arr[mid] <= arr[mid + 1])
  37.       i = mid;
  38.     else
  39.       j = mid;
  40.   }
  41. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement