首页新闻找找看学习计划

算法 取得泛型中最接近某个值的一项

0
悬赏园豆:30 [已解决问题] 解决于 2012-07-03 16:46

item.Page :1值为:0.00275000
item.Page :1值为:0.00280000
item.Page :1值为:0.00290000
item.Page :1值为:0.00230000
item.Page :1值为:0.00180000
item.Page :1值为:0.00145000
item.Page :1值为:0.00095000
item.Page :1值为:0.00095000
item.Page :1值为:0.00150000
item.Page :1值为:0.00110000
item.Page :1值为:0.00110000
item.Page :1值为:0.00145000
item.Page :1值为:0.00130000
item.Page :2值为:0.00024000
item.Page :2值为:0.00044400
item.Page :2值为:0.00051600
item.Page :2值为:0.00038400
item.Page :2值为:0.00032400
item.Page :2值为:0.00025200
item.Page :2值为:0.00024000
item.Page :2值为:0.00024000
item.Page :2值为:0.00043200
item.Page :2值为:0.00050400
item.Page :2值为:0.00050400
item.Page :2值为:0.00043200
item.Page :2值为:0.00038400
item.Page :3值为:0.00015000

这个没复制全!下面还有很多数据!!

 

像这样的值 泛型的实体 假如就是 Page 和 Value

怎么能取到 值最接近0.0012 的一项

求教

天真浪浪的主页 天真浪浪 | 小虾三级 | 园豆:950
提问于:2012-07-03 15:36
< >
分享
最佳答案
0

可以相减 取 进行  排序,再取 第一条,如:

var query = list.OrderBy(o => o.Value - 0.0012).First();

收获园豆:30
Qlin | 老鸟四级 |园豆:2403 | 2012-07-03 16:34
   List<RankPer> buffer = new List<RankPer>(8);    // 存放找到的数
        List<RankPer> tmp = new List<RankPer>(8);       // 临时缓存
        decimal min = 0M;
        decimal dis = 0M;
        min = Math.Abs(mper - rankperlist[0].Per);
        foreach (RankPer item in rankperlist)
        {
            dis = Math.Abs(mper - item.Per);
            if (dis < min)
            {
                
                min = dis;
                tmp.Clear();
                tmp.Add(item);
            }
            else if (dis == min)
            {
                tmp.Add(item);
            }
           
        }
        buffer.AddRange(tmp);
  foreach (RankPer finded in buffer)
        {
            //console.writeline("要找的:" + finded);
            Response.Write("要找的排名:" + finded.Rank+"百分比:"+finded.Per+"<br/>");
        }

我已经解决了。。这个好像叫 二差 查找

天真浪浪 | 园豆:950 (小虾三级) | 2012-07-03 16:44

分给你好了

天真浪浪 | 园豆:950 (小虾三级) | 2012-07-03 16:46

@天真浪浪: 你这个比较复杂,我 有点看不懂,要好好看看,呵呵

Qlin | 园豆:2403 (老鸟四级) | 2012-07-03 16:48

@Qlin: 就是先存一个(跟比较值相减的)最小值。然后一个一个往下比较;如果遇到比这个最小值还小的值就把上一个最小值丢掉!就这样把泛型遍历一遍!

天真浪浪 | 园豆:950 (小虾三级) | 2012-07-03 16:58
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册