使用范围:一串有序的数字
基本思路:设定左右边界,将处于两边界中间的数据与目标比较,目标大于中间的数据,说明目标处于中间的数据和右边界之间,这时候重新定义左边界为处于中间的值,重复操作,从而不断缩小范围,如果左右边界相等的时候,仍然没有找到目标,说明目标不在范围内。
代码实现
int main()
{
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
int aim = 0;
scanf("%d", &aim);
int left = 0;
int right = sizeof(arr) / sizeof(arr[0]) - 1;//左右边界
int mid = 0;
while (left <= right)//结束
{
mid = (left + right) / 2;
if (arr[mid] > aim)
{
right = mid;
}
else if (arr[mid] < aim)
{
right = mid;
}
else if (arr[mid] == aim)
{
printf("found it,it is %d",mid);
break;
}
else
{
printf("no found");
break;
}
}
return 0;
}