折半查找,又称为二分查找,仅适用于有序的顺序表。时间复杂度为O(logn).。
#include<bits/stdc++.h>
using namespace std;
int binsearch(int count,int *a,int target)
{
int low=0,high=count-1,mid;
while(low<=high)
{
mid=(low+high)/2;
if(a[mid]==target)
return mid;
else if(a[mid]>target)
high=mid-1;
else
low=mid+1;
}
return -1;
}
int main()
{
int count,target;
while(cin>>count>>target)
{
int *a=new int [count+1];
for(int i=0;i<count;i++)
cin>>a[i];
int flag=binsearch(count,a,target);
if(flag==-1)
cout<<"此有序表中不含有该元素"<<endl;
else
cout<<"该元素在有序表中的位置为:"<<flag+1<<endl;
}
system("pause");
return 0;
}