int binary_search(int a[], int k ,int s)
{
int left = 0;
int right = s - 1;
//一定是等于也有这个情况
while (left <= right)
{
//取中间值
int mid = (left + right) / 2;
//从中间向开头收缩
if (a[mid] > k)
{
right = mid - 1;
}
//从中间向后面缩
else if(a[mid]<k)
{
left = mid + 1;
}
//中间的就是
else
{
return mid;
}
}
}
int main()
{
int arr[] = {1,2,3,4,5,6,7,8,9};
int key = 7;
//数组总大小 一个元素大小
int sz = sizeof(arr) / sizeof(arr[0]);
//找到就返回找到位置的下标
//找不到返回-1 不能是0 因为数组下标从零开始
int ret = binary_search(arr, key, sz);
if (-1 == ret)
{
printf("找不到\n");
}
else
{
printf("找到了,下标是%d\n",ret);
}
return 0;
}
10-30
139
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountBlack.png)
01-08
129
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountBlack.png)
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交