二分查找 ,时间复杂度为Ologn。
但是二分查找只能适用于已经排好序的数组,algorithm-sort,切记。
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int a[]={9,7,8,6,5,3,4,2,1};
int n=9;
int value;
//二分 只能用于有序数组,必须事先排好序!
sort(a,a+n);
while(scanf("%d",&value)!=EOF)
{
int left=0,right=n-1,mid=0;
int ans=-1;
while(left<=right)
{
mid=(left+right)/2;
if(a[mid]==value)
{
ans=mid;
break;
}
if(a[mid]>value)
{
right=mid-1;
}
if(a[mid]<value)
{
left=mid+1;
}
}
if(ans==-1)
{
printf("没找到!\n");
}
else
{
printf("位于%d处\n",ans);
}
}
return 0;
}