c# 已知double数组 与传递过来的数比较 (剔除0)返回最大和最小值
时间: 2024-11-03 19:17:10 浏览: 29
在 C# 中,你可以创建一个方法,接收一个 `double` 数组以及一个整数值表示要剔除的元素个数。然后遍历数组,忽略指定数量的0,最后找到剩余元素中的最大值和最小值。以下是一个简单的示例:
```csharp
using System;
public class Program
{
public static void Main(string[] args)
{
double[] numbers = { 0, 5, 0, 10, 15, 0 };
int zeroCountToRemove = 2;
double[] filteredNumbers = RemoveZeros(numbers, zeroCountToRemove);
Console.WriteLine($"Minimum value after removing zeros: {GetMin(filteredNumbers)}");
Console.WriteLine($"Maximum value after removing zeros: {GetMax(filteredNumbers)}");
}
// 函数用于剔除数组中的0
private static double[] RemoveZeros(double[] array, int count)
{
Array.Resize(ref array, array.Length - count);
return array;
}
// 函数获取数组中的最小值
private static double GetMin(double[] array)
{
if (array.Length == 0) return double.NaN; // 如果数组为空,返回 Double.NaN
else return Math.Min(array[0], GetMinCore(array, 1));
}
// 辅助函数递归获取子数组的最小值
private static double GetMinCore(double[] array, int index)
{
if (index >= array.Length) return double.MaxValue;
return Math.Min(array[index], GetMinCore(array, index + 1));
}
// 获取数组中的最大值
private static double GetMax(double[] array)
{
if (array.Length == 0) return double.NaN; // 如果数组为空,返回 Double.NaN
else return Math.Max(array[0], GetMaxCore(array, 1));
}
// 辅助函数递归获取子数组的最大值
private static double GetMaxCore(double[] array, int index)
{
if (index >= array.Length) return double.MinValue;
return Math.Max(array[index], GetMaxCore(array, index + 1));
}
}
```
在这个例子中,`RemoveZeros` 方法移除了指定数量的0,`GetMin` 和 `GetMax` 分别递归地找出剩下的元素中的最小和最大值。
阅读全文