[筆記] 如何取得二維陣列最大與最小值

[筆記] 如何取得二維陣列最大與最小值

廢話

在論壇看到有人提出此問題,怕之後忘記,做個筆記記錄一下

 

一維陣列

首先來看,一維陣列取最大值與最小值的方式

int[] myIntArray = new int[5] { 1, 5, 9, 11, 18 };
            
myIntArray.Max();   // 最大值
myIntArray.Min();   // 最小值

這很簡單,相信大家都比我還要熟悉

 

二維陣列

    如果今天換成是二維陣列時,該如何取得最大與最小值呢?(只能用陣列、不能使用其他方法)

看到這問題我第一個想法是在塞入二維陣列資料時,在用一個變數去記錄最大數(或最小數)

查了一下MSDN與Google之後,發現有更簡單的作法

var myArr = new int[1, 99] { { 2, 2 }, { 3, 4 } };

int max = myArr.Cast<int>().Max();
int min = myArr.Cast<int>().Min();

    在.NET Framework 3.5之後,Array類別實做了System.Collections.Generic.IEnumerable<T> 介面(記得要加入System.Linq 命名空間),我們可以使用 Enumerable.Max<TResult>方法取得我們要的答案。打完收工!

 

參考

Array類別

Enumerable.Max<TSource> 方法

IEnumerable 介面

Obtaining the min and max of a two-dimensional array using LINQ