需求是这样,
这样的规则有上千条,于是满屏幕都是$foo > __ && $foo < __ $bar = __ ...
效率和美观都成问题 。
临界点的数值近乎随机,我想不到可以通过 $foo 推算 $bar 的公式。
目前的想法是把所有的规则二分掉,这样可以提高效率,但美观依然是问题 。
如果封在一个函数里, 看上去似乎确实美观一些,但效率反而不如这样。
有没有什么两者兼顾的比较完美的解决方案 ?
假设你的范围是之间是连续的(其实不连续也很容易实现)、没有重合的(这个没问题吧),那么通过对范围的起始位置排序,就可以很容易地用二分来实现。
$ranges = array(1, 100, 212, 324, 382, 465, 552);
然后你要做的事情就是用二分查找在ranges里面找到一个a[i]满足a[i] <= t && t < a[i+1]
。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。