思路:二分查找,每次取中间值和目标值比较,弱若大于目标值,则让左边从中间值走起,反之右边走;
#include <stdio.h>
//编写代码在整形有序数组中寻找到想要的数字,并返回下标
int main()
{
int arr[10] = { 1, 2, 4, 5, 6, 8, 9, 23, 56, 76 };//数组
int k = 23;//要寻找的值
int left = 0;//左边下标
int right = sizeof(arr) / sizeof(arr[0]) - 1;//右下标
while (left <= right)
{
int mid = left + (right - left) / 2;
if (k == arr[mid])
{
printf("找到了,下标是:%d\n", mid);
break;
}
else if (k>arr[mid])//每次缩小一半的范围
{
left = mid + 1;
}
else
{
right = mid - 1;
}
}
if (left > right)
printf("没找到!");
return 0;
}