从文本文档导入了一个字符串数组data[i]; 全是纯数值求出其中绝对值数值最大的10个数大家有什么高招?

解决方案 »

  1.   


                int[] arr = new int[11]{1,4,2,8,-9,5,6,3,5,7,-8};
                var v = (from i in arr orderby Math.Abs(i) select i).Reverse().Take(10);
                int[] r = v.ToArray();//r是结果
      

  2.   

    var result = data.Select(s => Convert.ToInt32(s)).OrderByDescending(x => x).Take(10);
      

  3.   

    忘记绝对值了var result = data.Select(s => Convert.ToInt32(s)).OrderByDescending(x => Math.Abs(x)).Take(10);
      

  4.   

    data[]是字符串数组
    data.Select(s => Convert.ToInt32(s)) 先将数组中每个元素转换为整数
    .OrderByDescending(x => Math.Abs(x)) 按最大值倒序排序
    .Take(10); 取集合中前10个
      

  5.   

    他们用的是LINQ的方法。如果无法理解,其实你就用最简单的冒泡排序,也可以得到你需要的结果的。只需要把冒泡排序里的比较条件改一改就OK了。
      

  6.   

    //变成这样是不是就好理解了int[] arr = new int[11] { 1, 4, 2, 8, -9, 5, 6, 3, 5, 7, -8 };
    var v = from i in arr orderby Math.Abs(i) descending select i;  //把数组中元素按绝对值降序排赋给v
    int[] r = v.Take(10).ToArray();   //再把v从序列开头取10个元素转化为数组,赋给r