51 lines
No EOL
1.3 KiB
C
51 lines
No EOL
1.3 KiB
C
// Binary Search in C
|
|
|
|
#include <stdio.h>
|
|
|
|
int binarySearch(int array[], int x, int low, int high)
|
|
/**
|
|
* Binary search implementation.
|
|
* int array[] - sorted array of INT to search for
|
|
* x - INT value for searching
|
|
* low - initial search starting index
|
|
* high - initial last array index
|
|
*/
|
|
{
|
|
// Repeat until the pointers low and high meet each other
|
|
while (low <= high)
|
|
{
|
|
// Calculating mid position of an array
|
|
int mid = low + (high - low) / 2;
|
|
|
|
// If value of center object == value to search for
|
|
if (array[mid] == x)
|
|
// Return it
|
|
return mid;
|
|
|
|
// If mid value is less than value to search for
|
|
if (array[mid] < x)
|
|
// Move low border to the right
|
|
low = mid + 1;
|
|
|
|
// If mid value is greater than value to search for
|
|
else
|
|
// Move high border to mid-1 position
|
|
high = mid - 1;
|
|
}
|
|
|
|
// If no value found - return -1
|
|
return -1;
|
|
}
|
|
|
|
int main(void)
|
|
{
|
|
int array[] = {3, 4, 5, 6, 7, 8, 9};
|
|
int n = sizeof(array) / sizeof(array[0]);
|
|
int x = 8;
|
|
int result = binarySearch(array, x, 0, n - 1);
|
|
if (result == -1)
|
|
printf("Not found");
|
|
else
|
|
printf("Element is found at index %d", result);
|
|
return 0;
|
|
} |