C#获取一个数组中的最大值、最小值、平均值

1.给出一个数组

             int[] array = new int[] { ,,,,,-,,,,};

2.数组Array自带方法

本身是直接可以调用Min(),Max(),Average()方法来求出 最小值、最大值、平均值

             Console.WriteLine("--------------Array自身方法-----------------");
Console.WriteLine("Min:{0}",array.Min());
Console.WriteLine("Max:{0}", array.Max());
Console.WriteLine("Average:{0}", array.Average());

输出结果:

 --------------Array自身方法-----------------
Min:-
Max:
Average:62.4

3.编码实现

最小值

         /// <summary>
/// 最小值
/// </summary>
/// <param name="array"></param>
/// <returns></returns>
public static int Min(int[] array)
{
if (array == null) throw new Exception("数组空异常");
int value = ;
bool hasValue = false;
foreach (int x in array)
{
if (hasValue)
{
if (x < value) value = x;
}
else
{
value = x;
hasValue = true;
}
}
if (hasValue) return value;
throw new Exception("没找到");
}

最大值

         /// <summary>
/// 最大值
/// </summary>
/// <param name="array"></param>
/// <returns></returns>
public static int Max(int[] array)
{
if (array == null) throw new Exception("数组空异常");
int value = ;
bool hasValue = false;
foreach (int x in array)
{
if (hasValue)
{
if (x > value)
value = x;
}
else
{
value = x;
hasValue = true;
}
}
if (hasValue) return value;
throw new Exception("没找到");
}

平均值

         /// <summary>
/// 平均值
/// </summary>
/// <param name="source"></param>
/// <returns></returns>
public static double? Average(int[] array)
{
if (array == null) throw new Exception("数组空异常");
long sum = ;
long count = ;
checked
{
foreach (int? v in array)
{
if (v != null)
{
sum += v.GetValueOrDefault();
count++;
}
}
}
if (count > ) return (double)sum / count;
return null;
}

4.测试输出

测试代码

         static void Main(string[] args)
{
int[] array = new int[] { ,,,,,-,,,,}; Console.WriteLine("--------------Array自身方法-----------------");
Console.WriteLine("Min:{0}",array.Min());
Console.WriteLine("Max:{0}", array.Max());
Console.WriteLine("Average:{0}", array.Average()); Console.WriteLine("---------------内部实现方法------------------");
int min = Program.Min(array);
int max = Program.Max(array);
double? average = Program.Average(array);
Console.WriteLine("Min:" + min);
Console.WriteLine("Max:" + max);
Console.WriteLine("Average:" + average);
Console.Read();
}

输出结果

以上代码也是从.NET Framework中摘出来的,实际上 Array的自带求最大值、最小值、平均值的算法就是这样做的,在.NET Framework源码中可以看到

5.工程源码下载

源代码下载

C#获取一个数组中的最大值、最小值、平均值的更多相关文章

  1. PHP获取以为数组中的最大值和最小值

    1.PHP获取一维数组中的最大值 <?php $a=array('1','3','55','99'); $pos = array_search(max($a), $a); echo $a[$po ...

  2. js中关于一个数组中最大、最小值以及它们的下标的输出的一种解决办法

    今天在学习js中的数组时,遇到的输出一个数组中最大.最小值以及它们的下表,以下是自己的解决方法! <script type="text/javascript"> var ...

  3. js获取数组中的最大值/最小值

    目录 前言 1. 使用Math的静态方法max/min 1.1 结合ES6的扩展运算符...使用 1.2 结合apply/call方法来使用 1.3 结合reduce来使用 2. 排序获取 2.1 只 ...

  4. Java求一个数组中的最大值和最小值

    原创作品,转载请注明出处:https://www.cnblogs.com/sunshine5683/p/9927186.html 今天在工作中遇到对一个已知的一维数组取出其最大值和最小值,分别用于参与 ...

  5. js中快速获取数组中的最大值最小值

    var a=[1,2,3,5]; alert(Math.max.apply(null, a));//最大值 alert(Math.min.apply(null, a)); //最小值 多维数组如下 v ...

  6. js获取数组中的最大值最小值

    遍历方法: var tmp = [1,12,8,5]; var max = tmp[0]; for(var i=1;i<tmp.length;i++){ if(max<tmp[i])max ...

  7. js中如何快速获取数组中的最大值最小值

    var a=[1,2,3,5]; alert(Math.max.apply(null, a));//最大值 alert(Math.min.apply(null, a));//最小值 多维数组可以这么修 ...

  8. js中获取数组中的最大值最小值

    var a=[1,2,3,5]; alert(Math.max.apply(null, a));//最大值 alert(Math.min.apply(null, a));//最小值 多维数组可以这么修 ...

  9. Javascript获取数组中最大和最小值

    取出数组中最大值或最小值是开发中常见的需求,今天继续讲解如何获取javascript数组中最大和最小值. 1.排序法 首先我们给数组进行排序,可以按照从小到大的顺序来排,排序之后的数组中第一个和最后一 ...

随机推荐

  1. sencha touch 学习汇总(转)

    1.官方网站:http://www.sencha.com/products/touch/ 2.在线文档:http://docs.sencha.com/touch/2.2.1/ 3.在线翻译文档:htt ...

  2. Selenium 3 + BrowserMobProxy 2.1.4 模拟浏览器访问 (含趟坑)

    背景 Selenium 是一个Web自动化测试的组件,可基于WebDriver去控制弹出浏览器去做一系列Web点击或行为测试(当然也可以去做一些邪恶的事..),减少重复人工网页测试的开销.Browse ...

  3. JSP(4)—Cookie创建及简单案例(自动登录)

    Cookie的创建: 创建一个JSP页面,第一次访问时显示没有Cookie,正在创建,再次访问就会自动显示cookie的名称,并设置cookie过期时间 <% //在javaweb规范中使用Co ...

  4. F - 质数检测 V2

    https://vjudge.net/contest/218366 Java解 import java.math.BigInteger; import java.util.Scanner; publi ...

  5. new Random().Next(1, 100); 多线程同时执行结果很高概率相同,

    /// <summary> /// new Random().Next(1, 100); 多线程同时执行结果很高概率相同, /// 是用的当前时间为seed,时间相同结果相同 /// // ...

  6. datasnap isapi程序iis设置

    datasnap isapi程序iis设置 添加ISAPI和CGI限制: 处理程序映射---添加模块映射: IIS应用程序池要如下设置: 停止ISAPI部署服务

  7. springboot获取properties文件的配置内容(转载)

    1.使用@Value注解读取读取properties配置文件时,默认读取的是application.properties. application.properties: demo.name=Name ...

  8. Docker中部署Mysql5.7和DbAdmin的docker-compose.yml

    一.简述 本文讲Docker通过docker-compose.yml部署Mysql5.7和dbAdmin的方法. 二.文件 1.docker-compose.yml内容如下: version: ' s ...

  9. IntelliJ IDEA web项目 工程构建运行部署

  10. Mac下的Chrome或Safari访问跨域设置,MBP上使用模拟器Simulator.app或iphone+Safari调试网页

    Mac下的Chrome或Safari访问跨域设置: mac下终端启动Chrome $ open -a Google\ Chrome --args --disable-web-security 或 /A ...