代码
//
// binary_search.cpp
//
// Demo program of binary search.
#include <stdio.h> // uses printf
#include <stdlib.h>
#include<algorithm>
using namespace std;
int binary_search(int data[],int search_item,int length)
{
int min =-1;
int max = length;
while(true)
{
// found condition.
if(data[(min+max)/2]==search_item)
return (min+max)/2;
// termination condition.
if(min==max)
{
return -1;
}
// else
if(data[(min+max)/2]<search_item)
{
min=(min+max)/2;
}
else
{
max=(min+max)/2;
}
}
}
int main()
{
#define MAX_ARRAY_SIZE 100
// an array to binary_search.
int int_array[MAX_ARRAY_SIZE];
// fill this array from the stdin.
int count=0;
printf("please enter the numbers you want to sort -1 to end:\n");
while(true)
{
int input;
scanf("%i",&input);
if(input==-1)
break;
else
int_array[count]=input;
if(count>=MAX_ARRAY_SIZE)
exit(0);
++count;
}
sort(int_array,int_array+count);
printf("\nAfter sort, the int_array is: ");
for (int i = 0; i < count; ++i)
{
printf("%4d",int_array[i]);
}
// get the value that you need to search.
int search;
printf("\nPlese enter the value that you need to Search ");
scanf("%i",&search);
// search.
int result;
if((result=binary_search(int_array,search,count))==-1)
{
printf("the value %i does not found in the array\n",search);
}
else
{
printf("the value %i is located at index %i\n",search,result);
}
return 0;
}