How to find the k closest elements to a giving value in sorted array with C

1 Answer

0 votes
#include <stdio.h>
#include <math.h>

void findKClosestElements(int arr[], int size, int k, int value) {
    int left = 0;
    int right = size - 1;
  
    while (right - left >= k) {
        if (abs(arr[left] - value) > abs(arr[right] - value)) {
            left++;
        }
        else {
            right--;
        }
    }
  
    while (left <= right) {
        printf("%d ", arr[left]);
        left++;
    }
}
  
int main(void)
{
    int arr[] = {6, 10, 12, 15, 17, 18, 20, 25, 28};
    int value = 16, k = 4;
    int size = sizeof(arr) / sizeof(arr[0]);

    findKClosestElements(arr, size, k, value);
}




/*
run:

12 15 17 18 

*/

 



answered Jan 21, 2024 by avibootz
edited Jan 21, 2024 by avibootz
...