我们首先需要找到最左边和最右边的数字的下标
然后再确定中间值,并取中间值与key作比较
比较后再确定key在左半边还是右半边
再分区间进行下一次比较
#include <stdio.h>
int main()
{
int arr[] = {1,2,3,4,5,6,7,8,9,10};
int key = 3;
int left = 0;
int right = sizeof(arr) / sizeof(arr[0]) - 1;
//相当于[left,right],也就是闭区间可以取到right,所以才需要减一
while (left <= right)
{
int mid = left + (right - left) / 2;
if (arr[mid] > key)
{
right = mid - 1;
}
else if (arr[mid] < key)
{
left = mid + 1;
}
else
{
printf("找到了,下标是:%d\n", mid);
break;
}
}
if (left > right)
{
printf("找不到了\n");
}
return 0;
}