思路/* while 循环{条件left<=right} */ 查平均值 首先 求出平均坐标 mid 如果中间值mid在被查的左边right不变 left =mid-1;/如果中间值在被查的左边 left=mid+1 如果都不知道就else 并打印坐标mid;
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
int main()
{
// 2.写代码可以在整型有序数组中查找想要的数字,找到了返回下标,找不到返回 - 1.(折半查找)
//查6
int arr[] = { 101,102,103,104,105,106,107,108,109,110,111,112,113};
int beicha =107 ;//被查数值
int left = 0;//左下标
int right = sizeof(arr) / sizeof(arr[0]) - 1;//利用sizeof 计算 元素 位数 -1;
int mid = 0;//平均值
while (left<=right)//循环条件
{
mid = (left + right) / 2;
if (arr[mid]>beicha)//如果中间值在被查的左边right不变 left =mid-1
{
right = mid - 1;
}
else if (arr[mid]<beicha)//如果中间值在被查的左边 left=mid+1
{
left = mid + 1;
}
else
{
printf("找到了");
printf("下标是:%d", mid);
break;
}
}
return 0;
}
运行结果: