利用数组进行数据查找---折半查找法(二分法)

本文介绍了二分法查找(折半查找法)的基本思想和适用情况,通过一个具体的例子展示了如何在有序数组中使用二分法查找目标数值,并提供了C语言和Java语言的实现代码。通过不断缩小查找范围,二分法能够快速定位到目标数值,提高了查找效率。
摘要由CSDN通过智能技术生成

二分法查找:

1.适用情况:在一批有序数据中查找某数。
2.基本思想:选定这批数据中居中间位置的一个数与查找数比较,看是否为所找之数,若不是,利用数据的有序性,可以决定所找的数是在选定数之前还是之后,从而很快可以将查找范围缩小一半,就是一半一半的缩小范围,进而较快地找到目的数。

理论思想看似懵懵地,其实我已经很简结易懂的表达了,接着就拿例题来理解如何实现二分法查找。

例题:假设 数组a中的数据是按由小到大的顺序排序:-12,0,6,16,23,56,80,100,110,115;从键盘上输入一个数,判断该数是否在数组中,若在,输出所在序号。
【分析】a、首先 假设low,mid和high三个变量,分别只是数组中的起始元素、中间元素与最后一个元素的过程。本题如下图:(假设要查找的数为80)
在这里插入图片描述
因为mid=23,而不是所要的80.所以还要继续进行查找。
b、接着 要把范围缩小,如图所示:
在这里插入图片描述
c、因为b步骤中,80比mid=100小,所以新的查找区间在【56,80】,如图所示:
在这里插入图片描述
d、因为80大于mid=56,所以新的查找区间在【80】,如图所示:
在这里插入图片描述
此时,mid亦指向80,查找到此结束。

【C语言 代码】

#include <stdio.h>
#define M 10
	void main(){
   
		int a[M] = {
   -12,0,6,16,23,56,80,100,110,115};
		int n,flag,low,mig,high;
		flag = 0;
		low = 0;
		high = M-1;
		printf("Please input a number :\n");
		scanf("%d",&n);
		***while(low <= high){
   
			mid = (low + high )/2;
			if(n == mid){
   
				flag = 1;
				break;
			}
			else 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

涛涛同学debug

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值