我需要编写一个在数组中查找N个最高数字的函数。
我什么也没尝试。甚至不知道从哪里开始。
public int marathon(int input1,int input2, int[] input3)
{
// this is the function, ignore first input its not relevant input 2 is
// N(How much highest numbers you want from array )
}
如果将2作为输入2,并且数组看起来像这样{1,2,3,4},则输出将为3和4
答案 0 :(得分:2)
一点lambda就能解决问题。
var top = new[] { 1, 2, 3, 4 }.OrderByDescending(num => num).Take(N);
答案 1 :(得分:0)
通过LINQ:只需对数组排序并获取前N个项目。扩展方法的示例:
public static class ExtensionMethods
{
public static IEnumerable<T> TakeHighests<T>(this IEnumerable<T> collection, int count)
{
return collection.OrderByDescending(i => i) // Sort the enumerable (arrays are also enumerables). Use OrderBy() for N lowest items
.Take(count) // Take only `count` items
}
}
采用2个最高值的示例:
int[] arr = ...;
int[] twoHighests = arr.TakeHighests(2).ToArray();