标题: 二分查表法程序,高效查找数据,温度检测很实用 [打印本页]
作者: yuhuidx 时间: 2020-11-12 15:56
标题: 二分查表法程序,高效查找数据,温度检测很实用
用最少的运算次数找出数据位置,基础思路。1000个数据,第一次判定是前500还是后500,第二次是前250还是后250.这样1000个数据很快就可以查完。
uint8 FineTab(uint16 *a,uint8 TabLong,uint16 data)//表中数据从大到小
{
uint8 st,ed,m ;
uint8 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)/2 ;
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 ;
}
作者: 紫色的云 时间: 2020-11-12 18:31
高效解决问题
作者: 黄youhui 时间: 2020-11-13 14:23
你的代码有很大的局限性,可以参考但不能直接用:首先你这个数据早就按大小顺序排列好了。其次你的2分法如果数据总数是单数怎么处理,也没有明确方法。
作者: yuhuidx 时间: 2020-11-24 14:09
1.这个你在做实际项目时就能体会到用处,特别是非线性传感器,需要数据库修正。
2.这个不分奇数偶数。
作者: 达朗贝尔 时间: 2020-11-25 10:43
赞,学校师傅让我们做一个温度数据采集检测分析的项目,通过查表方式得到温度,用二分法,能快速提高查表效率
欢迎光临 (http://www.51hei.com/bbs/) |
Powered by Discuz! X3.1 |