#include<iostream>
using namespace std;
int Search(int s[],int x,int n)
{//二分查找的非递归算法
int mid,low=0;
int high=n-1;
while(low<=high)
{
mid=(low+high)/2;
if(x==s[mid])
return mid;
else
if(x<s[mid])
high=mid-1;
else
low=mid+1;
}
return -1;
}
int Search1(int s[],int x,int n,int low,int high)
{//主函数main中调用时Search(s,x,n,0,n-1)
if(low>high)
return -1;
else
{
int mid=(low+high)/2;
if(x==s[mid])
return mid;
else if(x<s[mid])
return Search1(s,x,n,low,mid-1);
else
return Search1(s,x,n,mid+1,high);
}
}
void main()
{
int n,L[20],temp;
int k,k1;//找到元素的下标
cout<<"输入元素的个数:"<<endl;
cin>>n;
for(int i=0;i<n;i++)
{
cout<<"输入第"<<i+1<<"个数字:";
cin>>L[i];
}
cout<<"输入您要查找的元素:";
cin>>temp;
k=Search(L,temp,n-1);
k1=Search1(L,temp,n-1,0,n-1);
cout<<"快速查找(递归算法):";
cout<<L[k]<<"是第"<<k+1<<"个元素!" <<endl;
cout<<"快速查找(非递归):";
cout<<L[k1]<<"是第"<<k1+1<<"个元素!"<<endl;
}