Встречаю часто вопросы у студентов по поиску минимального значения в массиве, решил привести различные вариации поиска в разных массивах.
Поиск минимального значения в одномерном массиве с помощью Linq.
1 2 3 4 5 6 7 8 |
static void Main(string[] args) { int[] num = { 2, 5, 6, 3, 7, 9, 1 }; //Одномерный Console.WriteLine(num.Min()); Console.ReadKey(); } |
Поиск максимального значения в одномерном массиве с помощью Linq.
1 2 3 4 5 6 7 8 |
static void Main(string[] args) { int[] num = { 2, 5, 6, 3, 7, 9, 1 }; //Одномерный Console.WriteLine(num.Max()); Console.ReadKey(); } |
Поиск минимального значения в одномерном массиве с помощью цикла методом перебора.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
static void Main(string[] args) { int[] num = { 2, 5, 6, 3, 7, 9, 1 }; //Одномерный int tmpMin = int.MaxValue; for (int i = 0; i < num.Length; i++) { if (tmpMin > num[i]) { tmpMin = num[i]; } } Console.WriteLine(tmpMin); Console.ReadKey(); } |
Поиск максимального значения в одномерном массиве с помощью цикла методом перебора.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
static void Main(string[] args) { int[] num = { 2, 5, 6, 3, 7, 9, 1 }; //Одномерный int tmpMax = int.MinValue; for (int i = 0; i < num.Length; i++) { if (tmpMax < num[i]) { tmpMax = num[i]; } } Console.WriteLine(tmpMax); Console.ReadKey(); } |
Поиск минимального значения в многомерном массиве, с помощью Linq
Многомерный массив, в отличие от одномерного массива, не позволяет нам напрямую обратиться к методу Min. Но, это можно легко исправить, если воспользоваться методом Cast<T>, с помощью которого можно преобразовать многомерный массив в обобщенную коллекцию типа IEnumerable<T>. После чего нам станет доступен метод Min, и мы сможем найти минимальное значение массива, например:
1 2 3 4 5 6 7 8 9 10 |
static void Main(string[] args) { int[,] numbers = { { 100, 20, 63, 39, 428, 118 }, { 22, 34, 63, 59, 68, 26 } }; IEnumerable<int> colNumbs = numbers.Cast<int>(); int minValue = colNumbs.Min(); Console.WriteLine(minValue); Console.ReadKey(); } |
Поиск максимального значения в многомерном массиве, с помощью Linq
Поиск минимального значения в массив массивов, или зубчатом массиве.
1 2 3 4 5 6 7 8 |
static void Main(string[] args) { int[,] numbers = { { 100, 20, 63, 39, 428, 118 }, { 22, 34, 63, 59, 68, 26 } }; IEnumerable<int> colNumbs = numbers.Cast<int>(); int maxValue = colNumbs.Max(); Console.WriteLine(maxValue); Console.ReadKey(); } |
Чтобы найти минимальное значение в Jagged массиве, необходимо преобразовать содержимое массива в объект типа IEnumerable<T>. , но только выполнить эту операцию нужно не с помощью метода Cast, а например, с помощью метода SelectMany:
1 2 3 4 5 6 7 8 |
static void Main(string[] args) { int[][] numbers = { new int [] {12,123,35,75,33}, new int [] {44,42,64,96}, new int [] {121,42,733,45}}; int minValue = numbers.SelectMany(x => x).Min(); Console.WriteLine(minValue); Console.ReadKey(); } |
Поиск максимального значения в массив массивов, или зубчатом массиве.
1 2 3 4 5 6 7 |
static void Main(string[] args) { int[][] numbers = { new int[] { 12, 123, 35, 75, 33 }, new int[] { 44, 42, 64, 96 }, new int[] { 121, 42, 733, 45 } }; int maxValue = numbers.SelectMany(x => x).Max(); Console.WriteLine(maxValue); Console.ReadKey(); } |