二分查找算法是基于已经排好序的数列。这是它的实现:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//二分法查找
int find(int *result,int key,int len)
{
int first,end,mid;
first=0;
end=len-1;
while(first<=end)//注意这里的等于
{
mid=(first+end)/2;
if(result[mid]==key)
{
return 1;
}
else if(result[mid]>key)
{
end=mid-1;
}
else
{
first=mid+1;
}
}
return 0;
}
int main()
{
int value[10]={1,2,3,4,5,6,7,8,9,10};
int res=find(value,4,10);
printf("%d/n",res);
return 0;
}