C语言:二分查找查找有序数组中的元素

前言

在我们学习C语言的过程中,如果要查找一个数组当中是否存在某一个元素,我们可能会遍历整个数组,来依次判断是否存在这个函数,但这么做是效率极低的,如果数组中有很多个元素,那么我们要查找半天

二分查找

二分查找的效率是非常快的,尤其是在这个数组元素极多的情况尤为突出

二分查找的条件:必须是有序数组!!!

先来看完整代码

#include 

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;
}

思路

先找到数组的中间值,然后判断与查找元素的大小,由此来控制之后的rightleft逐步缩小范围最终找到我们要的那个值,若范围缩小结束都没有找到,则为不存在该元素

这里x的作用为判断后面找不到元素的情况

C语言:二分查找查找有序数组中的元素_第1张图片

总结

在查找有序数组的情况下,使用二分查找法的效率是会比直接遍历来的高的,推荐使用二分查找法

---------------------------------------------------------------------------------------------------------------------------------

你可能感兴趣的:(c语言,算法,数据结构)