【问题标题】:Get N max numbers and their corresponding position(index) from a 2D array double[,] using lambda expression使用 lambda 表达式从二维数组 double[,] 中获取 N 个最大数字及其对应的位置(索引)
【发布时间】:2012-11-02 22:15:47
【问题描述】:

这是一个类似于[Get N max numbers from a List<int> using lambda expression]的问题

但是我想知道如果我想保留那些 N 最大数字的索引,我应该如何使用 lambda 表达式来编写它。

示例)List&lt;int&gt; numbers = new List&lt;int&gt; { 12, 5, -8, 4, 7, 28, 3, 22 };

我们如何通过 lambda 获得 4 个最大数字:{28, 22, 12, 7} 加上索引 { 5, 7, 0, 4}

正如kirill 建议的那样:var result = numbers.OrderByDescending(n =&gt; n).Take(4); 但我怎样才能获得这 N 个最大数字的索引?它是一个 double[,] 二维数组(不是列表)

【问题讨论】:

    标签: .net linq c#-4.0 lambda


    【解决方案1】:

    请注意:OrderBy + Take 是一个 O(N*Log(N)) 操作,其中“Top N”可以更快地完成。 https://codereview.stackexchange.com/questions/9773/optimizing-liststring-performance-in-c/9777#9777

    说过;

    List<int> numbers = new List<int>() { 12, 5, -8, 4, 7, 28, 3, 22 };
    var list = numbers.Select((n, i) => new { Num=n, Inx=i })
                        .OrderByDescending(x => x.Num)
                        .Take(4)
                        .ToList();
    

    【讨论】:

    • 如果它不是一个列表,我的意思是它是一个双[,]数组怎么办?
    • @farzinparsa SO 充满了关于将double[,] 映射到double[] 的答案
    • 所以?那代表什么?
    猜你喜欢
    • 2016-02-24
    • 2012-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-19
    • 1970-01-01
    • 2016-06-22
    • 2015-10-11
    相关资源
    最近更新 更多