提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
二分
前言
一、【二分查找】步骤
二、【二分查找】的注意事项
三、举例详细讲解【二分查找】
一、【二分查找】的步骤
二分查找:又称折半查找。
1、从一个有序的数组的中间元素开始查找,如果找到了查找的数字,就将查找数字的下标返回。
2、如果中间元素比我们要寻找的数字小,那么我们就将右下标换成(中间元素的下标-1)。
3、如果一次没有找到,那么就重复上面的过程。
二、【二分查找】的注意事项
1、必须是有序数组
2、数据类型不能有溢出
3、数据量不可过大
三、举例详解【二分查找】
题目:编写代码在一个整形有序数组中查找具体的某个数
要求:找到了就打印数字所在的下标,找不到则输出:找不到
#include<stdio.h>
int main()
{
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };//初始化一个数组
int k = 0;//初始化我们要寻找的数字k
int sz = sizeof(arr) / sizeof(arr[0]);//计算数组内元素的个数
int left = 0;
int right = sz-1;//元素的下标是元素的大小-1
printf("请输入要查找的数字:");
scanf("%d", &k);//输入要查找的数字k
while (left<=right)//左下标比右下标小循环才有意义,是循环开始的条件
{
int mid = (left + right) / 2;//定义中间的下标
if (k > arr[mid])
{
left = mid + 1;
//如果我们要寻找的元素比中间元素大
//就将中间元素换成最左边的元素
}
else if (k < arr[mid])
{
right = mid - 1;
//如果我们要寻找的元素比中间元素小
//就将中间元素换成最右边的元素
}
else
{
printf("找到了,下标是:%d\n", mid);//如果我们要寻找的元素等于中间元素
//输出中间元素的下标,并退出循环
break;
}
}
if (left > right)//当我们全部找一遍以后,没有找到,并且跳出循环,只能输出找不到
printf("找不到\n");
return 0;
}
如果文章有错误,欢迎私信指正!