/****************************************
* Copyright huangkangquan@scut2008
* Create :2011/9/1
****************************************/
#include <stdio.h>
#include <stdlib.h>
int binary_search(int data[], int low, int high, int target)
{
if(low <= high)
{
int mid = (low + high) / 2;
if(data[mid] == target)
{
return mid;
}else if(data[mid] < target){
binary_search(data, mid+1, high,target);
}else if(data[mid] > target){
binary_search(data, low, mid-1,target);
}
}else{
return -1;
}
}
int main()
{
int data[] = {1,2,4,5,6,9,100};
int index = 0;
int input;
while(1)
{
printf("please input the target you want to find");
scanf("%d",&input);
if(input == -1)
break;
if((index = binary_search(data,0,sizeof(data)/sizeof(data[0]),input)) == -1)
{
printf("%s\n","can not find !");
}else{
printf("index of %d is %d\n",input,index);
}
}
return 0;
}
注意递归结束条件 !(low<=high),这与快排!(low < high)不一样,因为low == high的时候已经不需要再排了。
二分查找
最新推荐文章于 2023-05-28 13:59:52 发布