硬汉嵌入式论坛

 找回密码
 立即注册
查看: 925|回复: 5
收起左侧

使用if--else if--else判断数值区间的优化

[复制链接]

35

主题

106

回帖

211

积分

高级会员

积分
211
发表于 2023-7-27 14:13:35 | 显示全部楼层 |阅读模式
数值区间:A=[1.11, 1.13, 1.135, 1.141..............3.0],两个数值之间的间隔很小,并且间隔是无序的。单片机检测到数据B,需要判断B属于在A区间的哪个范围内,请问除了最简单的多个if-else if-else if.........else方法,还有其它有效的算法吗?谢谢解答!!
回复

使用道具 举报

75

主题

684

回帖

909

积分

金牌会员

积分
909
发表于 2023-7-27 17:52:31 | 显示全部楼层
二分法
回复

使用道具 举报

35

主题

106

回帖

211

积分

高级会员

积分
211
 楼主| 发表于 2023-7-27 17:56:23 | 显示全部楼层

数据间隔太小了,而且间隔是变化的。有的数据间隔为0.0001或是0.003
回复

使用道具 举报

75

主题

684

回帖

909

积分

金牌会员

积分
909
发表于 2023-7-27 18:03:54 | 显示全部楼层
坚持再坚持 发表于 2023-7-27 17:56
数据间隔太小了,而且间隔是变化的。有的数据间隔为0.0001或是0.003

多小都可以用二分法,小到最低精度就认为是相等的
回复

使用道具 举报

5

主题

61

回帖

76

积分

初级会员

积分
76
发表于 2023-7-28 09:16:46 | 显示全部楼层
可以参考插入排序的方法试试,不过如果只是比较单片机检测到的一个数值在数组中的位置,估计二分法是最快的吧,不用遍历数组。
回复

使用道具 举报

35

主题

106

回帖

211

积分

高级会员

积分
211
 楼主| 发表于 2023-7-28 13:47:40 | 显示全部楼层
Blake 发表于 2023-7-28 09:16
可以参考插入排序的方法试试,不过如果只是比较单片机检测到的一个数值在数组中的位置,估计二分法是最快的 ...

好的,谢谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-2 12:41 , Processed in 0.222026 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表