前言
在我们学习C语言的过程中,如果要查找一个数组当中是否存在某一个元素,我们可能会遍历整个数组,来依次判断是否存在这个函数,但这么做是效率极低的,如果数组中有很多个元素,那么我们要查找半天
二分查找
二分查找的效率是非常快的,尤其是在这个数组元素极多的情况尤为突出
二分查找的条件:必须是有序数组!!!
先来看完整代码
#include <stdio.h>
int main()
{
int arr[10] = { 0,1,2,3,4,5,6,7,8,9 };
int left = 0;
int right = sizeof(arr) / sizeof(arr[0]) - 1;
int x = 0;
int n = 0;
printf("请输入要查找的元素:>");
scanf("%d", &n);
while (left<=right)
{
int mid = (right + left) / 2;
if (arr[mid] == n)
{
x = 1;
printf("成功找到该元素\n");
break;
}
else if (arr[mid] > n)
{
right = mid - 1;
}
else
{
left = mid + 1;
}
}
if (x == 0)
{
printf("没找到该元素\n");
}
return 0;
}
思路
先找到数组的中间值,然后判断与查找元素的大小,由此来控制之后的right和left逐步缩小范围最终找到我们要的那个值,若范围缩小结束都没有找到,则为不存在该元素
这里x的作用为判断后面找不到元素的情况
总结
在查找有序数组的情况下,使用二分查找法的效率是会比直接遍历来的高的,推荐使用二分查找法
---------------------------------------------------------------------------------------------------------------------------------
完