一、C 程序实现
/*******************************************************************************************
*Description 二分查找算法
*Author liaoxiongxiong
*Version 1.0
*Time 2018-04-28
*******************************************************************************************/
#include <stdio.h>
//二分查找,版本1
int BinarySearch1(int a[], int value, int n)
{
int low, high, mid;
low = 0;
high = n-1;
while(low<=high)
{
mid = (low+high)/2;
if(a[mid] == value)
return mid;
if(a[mid]>value)
high = mid-1;
if(a[mid]<value)
low = mid+1;
}
return -1;
}
//二分查找,版本2,递归版本
int BinarySearch2(int a[], int value, int low, int high)
{
int mid = low+(high-low)/2;
if(a[mid]==value)
return mid;
if(a[mid]>value)
return BinarySearch2(a, value, low, mid-1);
if(a[mid]<value)
return BinarySearch2(a, value, mid+1, high);
}
//测试用例
int main()
{
int a[]={0,1,2,3,4,5,6,7,8,9};
int len = sizeof(a)/sizeof(a[0]);
int x=2; // 需要查找的元素
int i = BinarySearch2(a, x, 0, len);
if(i!=-1)
printf("元素 %d 在第 %d 个位置\n",x,i+1);
else
printf("没有找到元素:%d\n",x);
return 0;
}
运行结果:

原文:https://www.cnblogs.com/shujuxiong/p/9240082.html