#include<stdio.h>
int find(int arr[],int aim,int sz)//自定义函数
{
int left = 0;
int right = sz-1;
while(left<=right)//寻找aim。这里取等于号是因为有可能左右边界是同一个数aim。如果只取<的话,当aim是右边界时无法进行下一次循环找到aim。
{
int mid = (left + right) / 2;
if (arr[mid] < aim)
{
left = mid + 1;
}
else if (arr[mid] > aim)
{
right = mid - 1;
}
else
{
return mid;
}
}
return -1;//整个数组查找完都未找到,说明数组中没有这个数。
}
int main()//主函数
{
int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
int aim;
scanf("%d",&aim);
int sz = sizeof(arr) / sizeof(arr[0]);//计算数组元素
if (find(arr, aim, sz) != -1)
{
printf("下标为%d", find(arr, aim, sz));
}
else
printf("该数组中没有该数!");
return 0;
}
[C题目]二分(折半)查找有序数组中的元素
于 2021-11-19 11:39:07 首次发布