学习内容:
折半查找就是把所要找的对象与中间的数比较,如果小于中间的数即在前半部分,所以可以只取前半部分同样与前半部分的中间的数比较,以此类推。
int main()
{
int arr[] = {1,2,3,4,5,6,7,8,9,10};
int left = 0;
int right = sizeof(arr)/sizeof(arr[0])-1; //计算数组下标的最大值,left和right构成了寻找的区间。
int key = 7;
int mid = 0;
while(left<=right)
{
mid = (left+right)/2; //计算数组中间值的下标
if(arr[mid]>key) //中间值大于所要找的对象,所以只需要在前半部分寻找
{
right = mid-1; //修改所要找的区间
}
else if(arr[mid] < key) //中间值小于所要找的对象,所以只需要在前半部分寻找
{
left = mid+1; //修改所要找的区间
}
else
break;
}
if(left <= right)
printf("找到了,下标是%d\n", mid);
else
printf("找不到\n"); //while循环做完后如果还是left<=right说明是循环中最后的else执行了即找到 了对象,如果循环做完后不是left<=right说明是找遍了都找不到跳出了循环(因为while的循环条件也是left <= right)
}
2374

被折叠的 条评论
为什么被折叠?



