#include "stdio.h"
#include "stdlib.h"
int BinarySearch(int num[],int n,int left,int right) //递归
{
int middle=(left+right)/2;
if (left>right)
return -1;
if (n==num[middle])
return n;
else if(n>num[middle])
BinarySearch(num,n,middle+1,right);
else if(n<=num[middle])
BinarySearch(num,n,left,middle-1);
}
int binarySearch(int num[],int n,int left,int right)//非递归
{
while (left<=right)
{
int middle=(left+right)/2;
if (n==num[middle])
return n;
else if (n>num[middle])
left=middle+1;
else if (n<=num[middle])
right=middle-1;
}
return -1;
}
int main ()
{
int num[]={1,2,3,4,5,6,7,8,9,10};
int n=3;
for (n=0;n<=10;n++)
{
printf("%d\n",BinarySearch(num,n,0,9));
printf("%d\n",binarySearch(num,n,0,9));
}
return 0;
}