int arr[] = { 1,2,3,4,5,6,7,8,9,10,11 };
int k = 6;
int sz = sizeof(arr) / sizeof(arr[0]);
int left = 0;
int right = sz - 1;
while (left <= right)
{
int mid = (left + right) / 2;
if (arr[mid] > k) // k mid
{
right = mid - 1;
}
else if (arr[mid] < k)
{
left = mid + 1;// mid k
}//-1+1只是其中一步,可以通过循环来达到想要的加减次数
else
{
printf("找到了,下标是%d\n", mid);//因为两者相等了,所以直接打印Mid也行
break;//(不要漏了,跳出循环!)
}
}
if (left > right)
{
printf("找不到\n");
}
//此方法是用mid作为桥梁,与k构建关系,用中间的值去与自己要找的变量匹配
//左右都是指mid的位置,通过mid的位置,去实现k位置的查询 **