1.二分查找的思想就是:判断要找的数的范围在哪个区间,每次查找都减少确定范围一半的工作量;
2.在一个数组中确定要被查找的数:
首先确定数组大小length=sizeof(arr)。左值从arr[0]开始,右值从arr[length-1]开始
mid=(left+right)/2; 对比被查找的数和arr[mid]的大小,然后更改mid的值,再找
直至左值left==right右值时,说明被查找的数不存
int binary_search(int arr[], int x,int right)
{
int left = 0;
int mid = 0;
int z = 0;
do
{
mid = (right + left) / 2;
if (x >arr[mid])
{
left = mid + 1;
}
else if (x < arr[mid])
{
right = mid - 1;
}
else
{
return mid;
}
} while (left <= right);
if(left>right)
{
return -1;
}
}
int main()
{
int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
int i;
int right = sizeof(arr) / sizeof(arr[0]) - 1;
scanf("%d0\n",&i);
int ret =binary_search(arr, i,right);
if (ret == -1)
{
printf("找不到");
}
else
{
printf("找到了,下标是%d\n", i);
}
return 0;
}