1. 设计思路
二分搜索算法每次将数组中间值与目标值相比较,若相同,则该元素就是要寻找的元素,若不相同,二分搜索法通过一定的方法抛弃一半的待搜索区间,在剩余的区间中继续以相同方法搜索目标值.
2.源代码
#include <stdio.h>
int binarysearch(int a[],int high,int low,int x)
{
int mid;
if (low>high)
return -1; //查找失败
mid=(high+low)/2; //折半
if(x>a[mid]) //中间值小于x说明目标值在右边
binarysearch(a,high,mid+1,x);
else if(x<a[mid]) //中间值大于x说明目标值在左边
binarysearch(a,mid-1,low,x);
else return mid;
}
void main()
{
int a[5]={1,3,5,7,9},low=0,high=sizeof(a)/sizeof(a[0])-1,x,i;
scanf("%d",&x); //输入待查的值
i=binarysearch(a,high,low,x);
if(i==-1)
printf("no");
else
printf("%d",i);
}
3. 运行结果
7
3
(搜索7,由运行结果知7的下标为3。)