求助,5个浮点数,找出中间值,最快速的算法(已解决)

2020-02-20 20:39发布

本帖最后由 FSL_TICS_Robin 于 2014-11-27 10:29 编辑

求助,5个浮点数,找出中间值,最快速的算法。
我现在的实现是,5个值里面搜索到最大值,设置为0,
然后再搜索一遍最大值,设置0,
然后再搜索一遍这个最大值,为中间值。
但是比较慢,请帮忙指点实现快速的方法。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
48条回答
lianglee
1楼-- · 2020-02-25 19:47
本帖最后由 lianglee 于 2014-10-13 13:47 编辑

quote]maimaige 发表于 2014-10-13 12:28
请问,这个地方用无符号数的原因,如果用有符号数的话,会有什么问题? ...[/quote]

应该也不会有什么问题。
但是自己习惯上是这样,
例如:查表取得温度 值,
uchar Read_Temp_Tab(uint16 w_adc)
{
        uchar i,temp;
        for (i=0; i<sizeof(R_TAB); i++)
        {
                if(w_adc>=R_TAB[i+1])
                {
                        temp=((w_adc-R_TAB)*10)/(R_TAB-R_TAB[i+1]);        //取得温度值小数。
                        if(temp>4) // 摄氏度,四舍五入。
                        {
                                i+=1;
                        }
                        break;
                }
        }
        return i;
}

如果这个R_TAB表的长度为200的时候,用无符号数,一个字节(8Bit)就可以了。
如果你用有符号的话,那就需要用16(Bit)的变量来表示。
REVBER
2楼-- · 2020-02-25 21:33
帮顶了!!!
xly
3楼-- · 2020-02-26 00:10
1、浮点转为整数
2、按大小排列,去掉两个最大,与两个最小,剩下的就是中间值
dzlt2012
4楼-- · 2020-02-26 01:03
tam2907 发表于 2014-10-11 16:49
先任意三数比较抛掉两头,取中间值与剩下两数比较抛掉两头

你这个方法是错误的
Lengxue
5楼-- · 2020-02-26 02:15
 精彩回答 2  元偷偷看……
woaidamimi
6楼-- · 2020-02-26 04:24
tam2907 发表于 2014-10-11 16:49
先任意三数比较抛掉两头,取中间值与剩下两数比较抛掉两头

假设 5个数就是 1 2 3 4 5
1 2 3 比较抛掉两头得 2
2 4 5 比较抛掉两头得 4

一周热门 更多>