//二分查找,迭代版
#include <stdio.h>
int binarySearch1(int *p,int low,int high,int find)
{
int mid;
while(low<=high)//注意点1,当相等时仍需要再进行一次
{
mid = (low+high)/2;
if(p[mid] == find)
return mid;
else if(p[mid] < find)
{
low = mid+1;
}
else if(p[mid] > find)
{
high = mid-1;
}
}
return -1;
}
//二分查找,递归版
int binarySearch2(int *p,int low,int high,int find)
{
int mid;
if(low<=high)//注意点1,当相等时仍需要再进行一次
{
mid = (low+high)/2;
if(p[mid] == find)
return mid;
else if(p[mid] < find)
{
return binarySearch2(p,mid+1,high,find);
}
else if(p[mid] > find)
{
return binarySearch2(p,low,mid-1,find);
}
}
return -1;
}
int main(void)
{
int arr[10] = {1,15,23,33,45,56,87,91,100,102};
int idx = binarySearch2(arr,0,9,91);
if(idx != -1)
{
printf("your find idx = %d\n",idx);
}
else
printf("find none\n");
return 0;
}