Массивы
Почему массивы так важны в алгоритмах
Массив — одна из самых простых структур данных, но именно на нём удобно учиться мыслить алгоритмически. Элементы расположены по индексам, к любому из них можно обратиться напрямую, а порядок данных легко использовать при поиске, подсчётах и преобразованиях.
В задачах массив часто становится не просто контейнером, а пространством, по которому движется алгоритм: один индекс идёт слева направо, два указателя сближаются с разных сторон, окно охватывает текущий диапазон, а префиксные суммы позволяют быстро отвечать на запросы по отрезкам.
Что входит в раздел
- Основы массивов. Вспомним те свойства массива, которые особенно важны для алгоритмов: индексы, фиксированную длину, быстрый доступ к элементу и стоимость типичных операций.
- Обход массива. Научимся выбирать направление обхода, работать с индексами и аккуратно обрабатывать границы.
- Два указателя. Разберём подход, в котором два индекса совместно сужают область поиска или поддерживают нужное состояние без лишних вложенных циклов.
- Скользящее окно. Посмотрим, как эффективно работать с последовательными подмассивами, обновляя данные окна вместо полного пересчёта каждого диапазона.
- Префиксные суммы. Подготовим накопленные значения один раз, чтобы затем быстро получать суммы на произвольных отрезках.
- Операции in-place. Научимся изменять массив прямо на месте и понимать, когда это позволяет обойтись без дополнительной структуры данных.
- Матрицы. Перенесём знакомые идеи на двумерные данные: строки, столбцы, соседние ячейки и границы таблицы.
Один массив — много способов думать
int[] numbers = {4, 1, 7, 3};
for (int value : numbers) {
System.out.println(value);
}
Этот код просто проходит по элементам. Но дальше тот же массив можно будет обходить с двух сторон, рассматривать по частям, предварительно обрабатывать или изменять без создания копии. Главная цель раздела — научиться видеть в индексах инструмент для построения алгоритма.