# Thread: Binary Search in C help

1. ## Binary Search in C help

Hi...i am trying to write a program that allows me to locate a number in an array with fifteen numbers in it. I have been working on this code for a couple of days now and still can't get it to work. i have sorted the array already but now i am trying to do what is called a binary search to locate a number within the array. For example...If i input the number 28 then the output should say 28 found at position 8 or wherever. 28 is located within the array. if the number is not found then it is supposed to say 28 not found. Below is the code that i have for the shell sort and search. I have the Shell sort working so the part that i am trying to get working is the part after Binary Search. Any help would be much appreciated. I am a beginer so be simple please... Thanks so much!

void main()
{
int x[] = {28, 35, 16, 42, 92, 57, 81, 6, 10, 72, 38, 52, 32, 16, 7};
int temp, i, j, notfound,jump, first,last,mid, end;
char more;

clrscr();
printf("\n\n\tUnsorted Seq: ");
for (i = 0; i < 15; i++)
printf ("%d,", x[i]);

// Shell Sort

for(jump=15/2;jump>0;jump=jump/2)
{
for (i = jump; i < 15; ++i)
{
for(j=i-jump; j>=0 && x[j] > x[j + jump]; j=j-jump)
{
temp = x[j];
x[j] = x[j + jump];
x[j + jump] = temp;
}
}
}
printf("\n\t Sorted Seq: ");
for (i = 0; i < 15; i++)
printf ("%d,", x[i]);

// Binary Search (the part that does'nt work)
do
{
printf ("\n\n\t\tPlease input a number: ");
scanf ("%d", &temp);

first = 0;
last = 14;
mid = (last +first)/2;

while(first<=last)

{

if(temp >x[mid])
first = mid +1;
else if(temp< x[mid])
last = mid -1;
if(temp==x[mid])
{
printf ("\n\t\t%d is found at postion %d", temp,i);
break;
}
}
if (first>last)
printf ("\n\t\tDo more (Y/N)? ");
scanf ("%s", &more);
}
while (more == 'Y' || more == 'y');
} 2. *Reels in Horron* My god, man! Use code tags!

Code:
```loop:
middlevalue = (last+first)/2;
if( array[middlevalue] == tofind )
break;
else
if( last == first )
done_without_finding_anything

if( array[middlevalue] < tofind )
last = middlevalue;
else
first = middle value;```
That's all there is to it.

Quzah. 3. There is also a standard library function that does a binary search for you:
Code:
```#include <stdlib.h>
void *bsearch(const void *key, const void *buf, size_t num, size_t size, int (*compare)(const void *, const void *));

// http://www.cplusplus.com/ref/cstdlib/bsearch.html``` Popular pages Recent additions 