C#数组中找到绝对值最大的是个数

coolJuicy 2012-03-25 04:36:03
从文本文档导入了一个

字符串数组data[i]; 全是纯数值

求出其中绝对值数值最大的10个数

大家有什么高招?
...全文
627 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
coolJuicy 2012-03-25
  • 打赏
  • 举报
回复
多谢各位~~分数不多~~给分喽
porschev 2012-03-25
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 cooljuicy 的回复:]

引用 3 楼 karascanvas 的回复:

忘记绝对值了

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


能稍微给个注释不。。
[/Quote]


//变成这样是不是就好理解了

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


老毕 2012-03-25
  • 打赏
  • 举报
回复
他们用的是LINQ的方法。如果无法理解,其实你就用最简单的冒泡排序,也可以得到你需要的结果的。只需要把冒泡排序里的比较条件改一改就OK了。
种草德鲁伊 2012-03-25
  • 打赏
  • 举报
回复
data[]是字符串数组
data.Select(s => Convert.ToInt32(s)) 先将数组中每个元素转换为整数
.OrderByDescending(x => Math.Abs(x)) 按最大值倒序排序
.Take(10); 取集合中前10个
coolJuicy 2012-03-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 karascanvas 的回复:]

忘记绝对值了

var result = data.Select(s => Convert.ToInt32(s)).OrderByDescending(x => Math.Abs(x)).Take(10);
[/Quote]

能稍微给个注释不。。
种草德鲁伊 2012-03-25
  • 打赏
  • 举报
回复
忘记绝对值了

var result = data.Select(s => Convert.ToInt32(s)).OrderByDescending(x => Math.Abs(x)).Take(10);
种草德鲁伊 2012-03-25
  • 打赏
  • 举报
回复
var result = data.Select(s => Convert.ToInt32(s)).OrderByDescending(x => x).Take(10);
bdmh 2012-03-25
  • 打赏
  • 举报
回复

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是结果

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧