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

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

1.给出一个数组

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

2.数组Array自带方法

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

             Console.WriteLine(“————–Array自身方法—————–”);

         Console.WriteLine(&#34;Min:{0}&#34;,array.Min());<br/>
         Console.WriteLine(&#34;Max:{0}&#34;, array.Max());<br/>
         Console.WriteLine(&#34;Average:{0}&#34;, array.Average());</pre>

输出结果:

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

3.编码实现

最小值

         /// &lt;summary&gt;

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

最大值

         /// &lt;summary&gt;

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

平均值

         /// &lt;summary&gt;

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

4.测试输出

测试代码

         static void Main(string[] args)

     {<br/>
         int[] array = new int[] { ,,,,,-,,,,};

Console.WriteLine(“————–Array自身方法—————–”);

         Console.WriteLine(&#34;Min:{0}&#34;,array.Min());<br/>
         Console.WriteLine(&#34;Max:{0}&#34;, array.Max());<br/>
         Console.WriteLine(&#34;Average:{0}&#34;, array.Average());

Console.WriteLine(“—————内部实现方法——————”);

         int min = Program.Min(array);<br/>
         int max = Program.Max(array);<br/>
         double? average = Program.Average(array);<br/>
         Console.WriteLine(&#34;Min:&#34; + min);<br/>
         Console.WriteLine(&#34;Max:&#34; + max);<br/>
         Console.WriteLine(&#34;Average:&#34; + average);<br/>
         Console.Read();<br/>
     }</pre>

输出结果

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

5.工程源码下载