TheAlgorithms-C/searching/Other_Binary_Search.c

47 lines
723 B
C
Raw Normal View History

2017-05-12 08:43:02 +08:00
#include <stdio.h>
#include <stdlib.h>
#define len 5
2017-11-20 15:08:47 +08:00
int binarySearch(int array[], int leng, int searchX)
2017-05-12 08:43:02 +08:00
{
2017-11-20 15:08:47 +08:00
int pos = -1, right, left, i = 0;
left = 0;
right = leng - 1;
2020-04-08 21:41:12 +08:00
while (left <= right)
2017-11-20 15:08:47 +08:00
{
2019-08-25 21:16:42 +08:00
pos = left + (right - left) / 2;
2020-04-08 21:41:12 +08:00
if (array[pos] == searchX)
2019-08-25 21:16:42 +08:00
{
2017-11-20 15:08:47 +08:00
return pos;
2019-08-25 21:16:42 +08:00
}
2020-04-08 21:41:12 +08:00
else if (array[pos] > searchX)
2019-08-25 21:16:42 +08:00
{
right = pos - 1;
}
2017-11-20 15:08:47 +08:00
else
{
2019-08-25 21:16:42 +08:00
left = pos + 1;
2017-11-20 15:08:47 +08:00
}
}
2019-08-25 21:16:42 +08:00
return -1; /* not found */
2017-05-12 08:43:02 +08:00
}
2020-04-08 21:41:12 +08:00
int main(int argc, char *argv[])
2017-05-12 08:43:02 +08:00
{
2020-04-08 21:41:12 +08:00
int array[len] = {5, 8, 10, 14, 16};
2017-11-20 15:08:47 +08:00
int position;
position = binarySearch(array, len, 5);
if (position < 0)
printf("The number %d doesnt exist in array\n", 5);
else
{
printf("The number %d exist in array at position : %d \n", 5, position);
}
2020-04-08 21:41:12 +08:00
return 0;
2017-05-12 08:43:02 +08:00
}