How to get the top N highest values from array with index in C#

1 Answer

0 votes
using System;
using System.Linq;

class Program
{
    static void Main() {
        int[] arr = { 12, 98, 80, 50, 88, 35, 60, 97, 87, 91 };

        int N = 4;
        var topThree = arr.Select((val, i) => new { val, i })
                        .OrderByDescending(x => x.val)
                        .ThenByDescending(x => x.i)
                        .Take(N)
                        .ToArray();

        foreach (var entry in topThree) {
            Console.WriteLine("value: " + entry.val + " index: " + entry.i);
        }
    }
}
 
 
 
 
 
/*
run:
 
value: 98 index: 1
value: 97 index: 7
value: 91 index: 9
value: 88 index: 4
 
*/

 



answered Jun 8, 2021 by avibootz

Related questions

1 answer 257 views
1 answer 119 views
1 answer 148 views
1 answer 141 views
1 answer 144 views
1 answer 83 views
1 answer 263 views
...