在数组的子集中查找min值的优雅方法是什么?

RJI*_*IGO 2 c# arrays

我有一个a100个整数的数组.a[3]通过a[70] 和这个最小值的索引找到最小值的推荐方法是什么?假设没有重复的值.

我知道循环通过相关指数范围的笨拙方式:

for(i = 3; i < 70, i++) 
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种更优雅的方式在C#中执行此操作而不是循环.谢谢.

Nik*_*wal 6

要找出分钟

List<int> templist = a.Skip(3).Take(67).ToList();

int minimum = templist.Min();
Run Code Online (Sandbox Code Playgroud)

索引

int index = templist.FindIndex(i => i == minimum) + 3;
Run Code Online (Sandbox Code Playgroud)

我添加了3,因为列表中的索引将比原始序列中的索引少3 a.

它在做什么

  1. 跳过 - 留下前3个值,即索引0,1,2并返回剩余的数组.
  2. Take - 从Skip返回的数组中获取67个值.(因为你的for循环从3开始直到70,所以你基本上循环67项bcoz 70 - 3 = 67).
  3. ToList - 将返回的序列转换为List以查找索引.
  4. Min - 从中​​获取最小值.

你必须使用循环,因为它是一个序列.既然你说优雅而不是循环我使用LINQ(即使它也循环也).