基本思想
- 将n个元素分成个数大致相同的两半
- 取a[mid]与x比较,如果x=a[mid]则找到,算法终止
- 如果x<a[mid],则只在数组a左半部继续搜索x
- 如果x>a[mid],则只在数组a右半部继续搜索x
源码
/*
二分搜索法
*/
#include<stdio.h>
// 有序数组
int que[10]={1,2,3,4,5,6,7,8,9,10};
// 二分搜索
int BinarySearch(int x,int l ,int r)
{
int mid=(l+r)/2;
while (l<=r)
{
if (que[mid]==x)
return x;
else if (que[mid]>x)
r=mid-1;
else
l=mid+1;
mid=(l+r)/2;
}
return -1;
}
int main( )
{
// 要查找的数
int x=5;
int t=BinarySearch(5,0,9);
printf("%d",t);
return 0;
}