二分查找
#include <stdio.h>
//二分查找
int binaryserach(int *a,int length,int key)
{
int low,mid,high;
low=0;
high=length-1;
while(low<=high) //注意判断条件
{
mid = (low+high)/2;
if(a[mid]==key)
return mid;
if(a[mid]<key)
low=mid+1;
if(a[mid]>key)
high=mid-1;
}
return -1;
}
int main()
{
int a[10]={1,2,3,4,5,6,7,8,9,10};
int result=binaryserach(a,10,9);
printf("%d\n",result);
return 0;
}
加哨兵的顺序查找
#include <stdio.h>
int Findseq(int *listseq,int listlength,int key)
{
listseq[0]=key;
int n=listlength;
while(listseq[n]!=key)
{
n--;
}
return n;
}
int main()
{
int a[7]={0,1,2,3,4,5,6};
int i;
i=Findseq(a,7,6);
printf("%d\n",i);
return 0;
}