42 lines
1.2 KiB
C
42 lines
1.2 KiB
C
/*
|
|
* C Program to Find Ceiling & Floor of X given a Sorted Array & a value X
|
|
*/
|
|
#include <stdio.h>
|
|
|
|
/* Function to get index of ceiling of x in arr[low..high] */
|
|
int ceilSearch(int arr[], int low, int high, int x)
|
|
{
|
|
int i;
|
|
/* If x is smaller than or equal to first element,then return the first element */
|
|
if (x <= arr[low])
|
|
return low;
|
|
/* Otherwise, linearly search for ceil value */
|
|
for (i = low; i < high; i++)
|
|
{
|
|
if (arr[i] == x)
|
|
return i;
|
|
/* if x lies between arr[i] and arr[i+1] including arr[i+1], then return arr[i+1] */
|
|
if (arr[i] < x && arr[i + 1] >= x)
|
|
return i + 1;
|
|
}
|
|
/* If we reach here then x is greater than the last element of the array, return -1 in this case */
|
|
return -1;
|
|
}
|
|
|
|
int main()
|
|
{
|
|
int arr[] = {1, 2, 8, 10, 10, 12, 19};
|
|
int n = sizeof(arr)/sizeof(arr[0]);
|
|
int x = 3;
|
|
int index = ceilSearch(arr, 0, n-1, x);
|
|
if (index == -1)
|
|
printf("Ceiling of %d doesn't exist in array ", x);
|
|
else
|
|
printf("ceiling of %d is %d", x, arr[index]);
|
|
getchar();
|
|
return 0;
|
|
}
|
|
|
|
/*
|
|
|
|
ceiling of 3 is 8
|