//线性搜索
#include<iostream>
using namespace std;
int search(int key,int a[],int len)
{
int ret=-1;
for(int i=0;i<len;i++)
{
if(key==a[i])
{
ret=i;
break;
}
}
return ret;
} //找到该元素就返回元素位置,否则返回-1
int main()
{
int a[]={1,3,2,5,12,14,23,6,9,45};
int n;
cin>>n;
int r=search(n,a,sizeof(a)/sizeof(a[0]));
cout<<r<<endl;
return 0;
}
//二分搜索
#include<iostream>
using namespace std;
int search(int k,int a[],int len)
{
int ret=-1;
int left=0;
int right=len-1;
while(right>=left)
{
int mid=(left+right)/2;
if(a[mid]==k)
{
ret=mid;
break;
}
else if(a[mid]>k)
{
right=mid-1;
}
else
{
left=mid+1;
}
}
return ret;
}
int main()
{
//二分搜索的数组必须是按规律排序
int a[]={2,4,7,11,13,16,21,24,27,32,36,40,46};//以从小到大为例
int n;
cin>>n;
int r=search(n,a,sizeof(a)/sizeof(a[0]));
cout<<r<<endl;
return 0;
}