#include<iostream>
using namespace std;
//非递归的方法
int F_BinarySearch(int a[],int n,int Number)
{
if(a==NULL||n<=0)
{
return -1;
}
int begin=0,end=n-1;
while(begin<=end)
{
int mid=begin+(end-begin)/2;
if(Number==a[mid])
return mid+1; //注意了!!
else if(Number>a[mid])
begin=mid+1; //注意了!!
else
end=mid-1;
}
return -1;
}
//递归方法
int T_BinarySearch(int a[],int Number,int begin,int end)
{
if(begin>end)
{
return -1;
}
int mid=begin+(end-begin)/2;
if(Number==a[mid])
return mid+1;
else if(Number>a[mid])
return T_BinarySearch(a,Number,mid+1,end); //注意了!!
else
return T_BinarySearch(a,Number,begin,mid-1); //注意了!!
}
//定义输出
void print(int result)
{
if(result==-1)
cout<<"数组中不存在这个数!!!"<<endl;
else
cout<<"查到了!!位置在第:"<<result<<"个数"<<endl;
}
int main()
{
int a[]={1,2,3,4,5,6,7,8,9,0};
int length=sizeof(a)/sizeof(a[0]);
cout<<"利用非递归方法进行查找:"<<endl;
int F_result=F_BinarySearch(a,length,5);
print(F_result);
cout<<endl;
cout<<"利用递归方法进行查找:"<<endl;
int T_result=T_BinarySearch(a,10,0,length);
print(T_result);
cout<<endl;
system("pause");
return 0;
using namespace std;
//非递归的方法
int F_BinarySearch(int a[],int n,int Number)
{
if(a==NULL||n<=0)
{
return -1;
}
int begin=0,end=n-1;
while(begin<=end)
{
int mid=begin+(end-begin)/2;
if(Number==a[mid])
return mid+1; //注意了!!
else if(Number>a[mid])
begin=mid+1; //注意了!!
else
end=mid-1;
}
return -1;
}
//递归方法
int T_BinarySearch(int a[],int Number,int begin,int end)
{
if(begin>end)
{
return -1;
}
int mid=begin+(end-begin)/2;
if(Number==a[mid])
return mid+1;
else if(Number>a[mid])
return T_BinarySearch(a,Number,mid+1,end); //注意了!!
else
return T_BinarySearch(a,Number,begin,mid-1); //注意了!!
}
//定义输出
void print(int result)
{
if(result==-1)
cout<<"数组中不存在这个数!!!"<<endl;
else
cout<<"查到了!!位置在第:"<<result<<"个数"<<endl;
}
int main()
{
int a[]={1,2,3,4,5,6,7,8,9,0};
int length=sizeof(a)/sizeof(a[0]);
cout<<"利用非递归方法进行查找:"<<endl;
int F_result=F_BinarySearch(a,length,5);
print(F_result);
cout<<endl;
cout<<"利用递归方法进行查找:"<<endl;
int T_result=T_BinarySearch(a,10,0,length);
print(T_result);
cout<<endl;
system("pause");
return 0;
}
输出结果如下: