线性查找
int search(int a[],int n,int key)
{
a[0]=key; //哨兵
for(int i=n;a[i]!=key;i--)
{
return i; //查找成功ASL=n+1/2 ; 不成功则ASL=n+1
}
}
二分查找(折半查找)方法一
int sreach1(int a[],int n,int key,int num)
{
int low=1;
int high=n;
while(low<=high)
{
sum++;
int mid=(low+high)/2;
if(key==a[mid])
{
return mid;
}
else if(key<a[mid])
{
high=mid+1;
}
else
low=mid+1;
return 0;
}
}
二分查找(折半查找)方法二
int search2(int a[],int low,int high,int key)
{
while(low<=high)
{
int mid=(low+high)/2;
if(key==a[mid])
{
return mid;
}
else if(key<a[mid])
{
search2(a,low,mid+1,key);
}
else
search2(a,mid+1,high,key);
return 0;
}
}