#include<stdio.h>
int main()
{
int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
int k = 0;
scanf("%d", &k);
int sz = sizeof(arr) / sizeof(arr[0]);
//求出数组中元素个数
int left = 0;
//左下标
int right = sz - 1;
//右下标
while (left <= right)
{
int mid = (left + right) / 2;
//每次都会根据左右下标求出新的mid
//为防止溢出,可将上式改为int mid = left + (right - left) / 2;
if (arr[mid] < k)
{
left = mid + 1;
//中间数小于要找的数,左下标移动到中间数右边
}
else if (arr[mid] > k)
{
right = mid - 1;
//中间数大于要找的数,右下标移动到中间数左边
}
else
{
printf("找到了!下标为:%d\n", mid);
break;
//提前找到,跳出循环
}
}
if (left > right)
{
printf("找不到!\n");
}
return 0;
}
晓铭认为这段代码最为重要的部分,是如何使用sizeof函数求得整型数组的长度(整型数组中的元素个数)。首先,我们需要知道sizeof函数的作用为计算各种数据类型的大小,下图