博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
二分查找算法
阅读量:6942 次
发布时间:2019-06-27

本文共 1424 字,大约阅读时间需要 4 分钟。

//*************************************// 函数名称:FineTab  二分查找算法 ->查温度表// 函数功能:查找数据在表中相应的位置 表中数据从大到小// 入口參数:表地址、表长度、要查找的数据// 出口參数:无// 返 回 值:数据在表中的位置//***************************************/int FineTab(int *a,int TabLong,int data)//查表数据为从大到小排序{		int st,ed,m ;		int i ;			st = 0 ;//初始化要查询的数为第一个		ed = TabLong-1 ;//最后一个数		i = 0  ;			if(data >= a[st]) return st ;		else if(data < a[ed]) return ed ;			while(st < ed)		{			m = (st+ed)>>1 ;//二分取要查询的中间值				if(data == a[m] ) break ;			if(data < a[m] && data > a[m+1]) break ;									if(data > a[m])	ed = m ;								else st = m ;							if(++i > TabLong) break ;		}			if(st > ed ) return 0 ;			return m ;}//*************************************// 函数名称:FineTab  二分查找算法 ->查温度表// 函数功能:查找数据在表中相应的位置 表中数据从小到大排序// 入口參数:表地址、表长度、要查找的数据// 出口參数:无// 返 回 值:数据在表中的位置//***************************************/int Fine1Tab(int *a,int TabLong,int data){		int st,ed,m ;		int i ;			st = 0 ;//初始化要查询的数为第一个		ed = TabLong-1 ;//最后一个数		i = 0  ;			if(data <= a[st]) return st ;//小于等于第一个数 ,查询值为0,即为第一个数		else if(data >= a[ed]) return ed ;//大于等于最后一个数,查询之为最后一个数			while(st < ed)//循环查询		{	    	m = (st+ed)>>1 ;//二分取要查询的中间值			if(data == a[m] ) break ;//刚好是要查询的值,结束查询			if(data > a[m-1] && data < a[m]) break ;//data介于中间值和中间值的上个值之间,结束查询			if(data < a[m])	ed = m ;//data小于当前中间值,更新最后的范围值								else st = m ;	//data大于当前中间值,更新開始的范围值							if(++i > TabLong) //防止溢出				break ;		}			if(st > ed ) return 0 ;			return m ;}

转载地址:http://czinl.baihongyu.com/

你可能感兴趣的文章
thinkphp 读取页面报错 说 /Runtime/Cache/Home/XXXXXX.php 错误
查看>>
第三届开源操作系统年度技术年会 --- 资料下载
查看>>
揭秘Windows10 UWP中的httpclient接口[2]
查看>>
Cookie的使用
查看>>
Jenkins和maven自动化构建java程序
查看>>
读取系统执行状态的shell脚本
查看>>
arcgis 10.1 导入数据到oracle 发布地图服务
查看>>
高吞吐高并发Java NIO服务的架构(NIO架构及应用之一)
查看>>
znujljhzolktftcc
查看>>
高流量站点NGINX与PHP-fpm配置优化
查看>>
eclipse中改变默认的workspace的方法及说明
查看>>
一个基于MVVM的TableView组件化实现方案
查看>>
教你区分LVDS屏线及屏接口定义
查看>>
C函数tolower,与toupper
查看>>
c 进程间的通信
查看>>
【张宴】PHP在金山游戏运营中的应用
查看>>
tomcat发布静态网页
查看>>
python函数参数前面单星号(*)和双星号(**)的区别
查看>>
深入理解javascript作用域系列第三篇——声明提升(hoisting)
查看>>
mybatis_helloWorld_sequence图(3)
查看>>