Codeby web-security - новый курс от Codeby Security School

Представляем вашему вниманию новый курс от команды The Codeby - "Тестирование Веб-Приложений на проникновение с нуля". Общая теория, подготовка рабочего окружения, пассивный фазинг и фингерпринт, Активный фаззинг, Уязвимости, Пост-эксплуатация, Инструментальные средства, Social Engeneering и многое другое. Подробнее ...


Нахождение индекса максимального и минимального элемента массива

В этой статье хочу показать несколько простых решений, с помощью которых можно найти индекс максимального или минимального элемента массива.

Как найти индекс минимального элемента массива?

Сначала нужно найти минимальный элемент массива, а затем воспользоваться одним из ниже приведенных примеров.

Одномерный массив

Для нахождения индекса минимального элемента в одномерном массиве можно воспользоваться методом IndexOf класса Array, например:

int [] numbers = {20, 13, 562, 1, 900, 78};
//1. Находим минимальное значение
int minVal = numbers.Min(); //1
//2. Находим индекс
int indexMin = Array.IndexOf(numbers, minVal);
//Результат: 3

Этот же результат можно получить и с помощью метода FindIndex всё того же класса Array, например:

int indexMin = Array.FindIndex(numbers, x => x == minVal);

Если в массиве будет найдено два или более одинаковых минимальных или максимальных значений, то тогда будет получен индекс самого первого из них. Если нужно получить индекс последнего найденного элемента, то тогда можно воспользоваться методом FindLastIndex, например:

int [] numbers = { 20, 1, 562, 10, 900, 78, 1 };
int minVal = 1;
int lastIndexMin = Array.FindLastIndex(numbers,x => x == minVal);
//Результат: 6

Многомерный массив

С помощью методов: IndexOf и FindIndex можно найти индекс элемента только в одномерном массиве. В многомерном массиве индекс элемента будет иметь значения вида: array[0, 0] и найти его можно, например, с помощью обычного цикла for.


Paranoid - курс от Codeby Security School

Представляем вашему вниманию курс от команды codeby - "Комплекс мер по защите персональных данных, анонимности в интернете и не только" Подробнее ...


int[,] numbers = { { 100,30,6,8,18,17 }, { 2,3,61,69,8,56 } };
//1. Находим минимальный элемент
IEnumerableint> colNumbs = numbers.Castint>();
int minVal = colNumbs.Min(); //2
//2. Находим индекс минимального элемента
for (int i = 0; i < numbers.GetLength(0); i++)
{
for (int j = 0; j < numbers.GetLength(1); j++)
{
if (numbers[i, j].Equals(minVal))
{
Console.Write(i + "-" + j);
//выход из цикла
 i = numbers.GetLength(0);
break;
}
}
}
//Результат: 1-0

Если в многомерном массиве будет несколько одинаковых минимальных или максимальных значений, то тогда можно убрать часть, отвечающую за выход из цикла и получить индекс каждого найденного элемента, например:

int[,] numbers = { { 100,2,6,8,18,17 }, { 2,3,61,69,8,56 } };
int minVal = 2;
if (numbers[i, j].Equals(minVal))
{
Console.WriteLine(i + "-" + j);
}
//Результат: 0-1, 1-0

Jagged массив

В Jagged массиве каждый элемент представляет собой отдельный массив. Чтобы найти индекс самого минимального значения в массиве также воспользуемся циклом for.

int[][] numbers = { new int [] {12,13,6,7,8},
new int [] {99,4,6,3,90},
new int [] {11,22,77,55}};
//1. Находим минимальный элемент
int minVal = numbers.SelectMany(x => x).Min();
//находим его индекс
for (int i = 0; i < numbers.Length; i++)
{
for (int j = 0; j < numbers[i].Length; j++)
{
if (numbers[i][j].Equals(minVal))
{
Console.Write(i + "-" + j);
//выход из цикла
i = numbers[i].Length;
break;
}
}
}
//Результат: 1-3

Как найти индекс максимального значения?

Всё то же самое, только сначала нужно найти максимальный элемент массива.

Читайте также:


Codeby Market от Сodeby

Мы запустили свой магазин CodebyMarket Equipment for InfoSec. Уже добавили RaspberryAlfa Long-RangeOrange PiArduino и многое другое. Купить Pentesting Devices