c# - 在数组的子集中找到最小值的优雅方法是什么?

标签 c# arrays

我有一个包含 100 个整数的数组 a。在 a[3]a[70] 中找到最小值的推荐方法是什么以及这个最小值的索引?假设没有重复值。

我知道循环遍历相关索引范围的笨拙方法:

for(i = 3; i < 70, i++) 
{
    ...
}

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

最佳答案

找出分钟

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

int minimum = templist.Min();

对于索引

int index = templist.FindIndex(i => i == minimum) + 3;

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

它在做什么

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

你必须使用循环,因为它是一个序列。既然你说优雅所以我使用了 LINQ 而不是 for 循环(即使它也执行循环)。

关于c# - 在数组的子集中找到最小值的优雅方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10763077/

相关文章:

c# - 从互联网上的txt文件中获取文本

c# - 将项目添加到 EF Core 中的集合导航属性

c# - DDD - 实现授权不变量

c# - 在 C# 中计算过滤的 excel 范围的行数

arrays - 对 [Any] 数组进行排序

arrays - 从长度为 N 的数组创建嵌套的 JSON

c - C 中使用指针表示数组的各种方式

c# - 如何组织我的 Xamarin.Forms 解决方案?

python - ReplyKeyboardMarkup 对 python 不起作用?

具有多个条件的Python numpy数组迭代图像