前言
在我们学习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的作用为判断后面找不到元素的情况
总结
在查找有序数组的情况下,使用二分查找法的效率是会比直接遍历来的高的,推荐使用二分查找法
---------------------------------------------------------------------------------------------------------------------------------
完