二分查找
二分查找时间复杂度为O(logn)
示例代码:
#include<stdio.h>
int binary_search(int *a,int len,int e) //数组按升序排列
{
int low=0;
int high=len-1;
int mid;
int i;
while(low<=high)
{
mid=(low+high)/2;
if(e==a[mid])
return mid;
else if(e>a[mid])
low=mid+1;
else if(e<a[mid])
high=mid-1;
}
return -1;
}
int main()
{
int a[100]={};
int len,i,e,k;
printf("请输入数组元素个数:");
scanf("%d",&len);
printf("请输入数组:");
for(i=1;i<=len;i++)
scanf("%d",&a[i-1]);
printf("请输入待查元素:");
scanf("%d",&e);
k=binary_search(a,len,e);
if(k==-1)
printf("查找不成功!\n'");
else
printf("待查元素位置为:%d\n",k);
return 0;
}
运行结果:
: