折半查找也成二分查找,是一种高效率的算法,算法思路很简单不多说,时间复杂度为O(log2 n)。
#include <iostream>
using namespace std;
int Search_Bin(int a[],int n,int key)
{
int low=0,high=n-1;
while(low<=high)
{
int mid=(low+high)/2;
if(a[mid]==key)
{
return mid+1;
}
else if (a[mid]>key)
{
high=mid-1;
}
else if(a[mid]<key)
{
low=mid+1;
}
}
return 0;
}
int main()
{
int n,k,a[1005],ans;
while(cin>>n)
{
for(int i=0; i<n; i++)
{
cin>>a[i];
}
cin>>k;
ans=Search_Bin(a,n,k);
if(ans)
{
cout<<ans<<endl; //cout<<"关键字是第"<<ans<<"个数"<<endl;
}
else
{
cout<<"查找失败"<<endl;
}
}
return 0;
}