函数封装代码:
void number(int arr[],int key,int left,int right)
{
while (left <= right)
{
int mid = (left + right) / 2; //找到中间下标,在和要找的数字比较
if (arr[mid] == key) //等于要找的数字就输出
{
printf("找到了下标是【%d】", mid); //注意:这里打印是小标,是上面中间变量的(mid)
break;
}
else if (arr[mid] < key) //中间值变量小于要找的值就把左下标+1
{
mid = left++;
}
else //中间值变量大于要找的值就把右下标-1
{
mid = right--;
}
if (left > right)
{
printf("找不到!");
}
}
}
主函数调用:
int main()
{
int arr[] = { 1,2,3,4,5,6,7,8,9,10 }; //注意:这种方法只能是升序序列
int left = 0; //定义左下标
int right = sizeof(arr) / sizeof(arr[0]); //定义右下标
int key = 0; //要找的值
scanf("%d", &key);
number(arr,key, left,right);
return 0;
}