C语言【二分查找】详解

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 二分

前言

一、【二分查找】步骤
二、【二分查找】的注意事项
三、举例详细讲解【二分查找】

一、【二分查找】的步骤

二分查找:又称折半查找。 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
", mid);//如果我们要寻找的元素等于中间元素
			                                     //输出中间元素的下标,并退出循环
			break;
		}
	}
	if (left > right)//当我们全部找一遍以后,没有找到,并且跳出循环,只能输出找不到
		printf("找不到
");
	return 0;
}

如果文章有错误,欢迎私信指正!

经验分享 程序员 微信小程序 职场和发展