//二分查找法
#include <stdio.h>
#define BUFFERSIZE 10
int binary_search(int array[], int low, int high, int des)
{
while(low <= high)
{
int middle = low + (high - low)/2;
if(des == array[middle])
{
return middle;
}
if(des > array[middle])
{
low += 1;
}
else
{
high -= 1;
}
}
return -1;
}
int binary_search_recur(int array[], int low, int high, int des)
{
if(low > high)
{
return -1;
}
int middle = low + (high - low)/2;
if(des == array[middle])
{
return middle;
}
if(des > array[middle])
{
low += 1;
}
else
{
high -= 1;
}
return binary_search_recur(array, low, high, des);
}
int main(int argc, char* argv[])
{
printf("Hello Search !\n");
int yx[BUFFERSIZE] = {0};
for(int ii = 0; ii < BUFFERSIZE; ii++)
{
yx[ii] = ii;
}
printf("yx:");
for(int ii = 0; ii < BUFFERSIZE; ii++)
{
printf(" %d", yx[ii]);
}
printf("\n");
int result1 = binary_search(yx, 0, BUFFERSIZE - 1, 11);
printf("result1 = %d\n", result1);
int result2 = binary_search_recur(yx, 0, BUFFERSIZE - 1, 11);
printf("result2 = %d\n", result2);
return 0;
}