Массив хранит много значений одного типа под одним именем с доступом по номеру. Большинство задач на массивы решается несколькими типовыми алгоритмами: сумма, подсчёт, поиск максимума, сдвиг и префиксные суммы.
Что нужно знать
- Индексы с 0 до n−1:
int a[10];— элементыa[0]…a[9]. - Выход за границы — неопределённое поведение: мусор или падение программы.
- Максимум: начинать с
m = a[0], а не с 0 (элементы могут быть отрицательными). - Разворот: обмен
a[i]иa[n-1-i]до середины. - Циклический сдвиг влево: сохранить
a[0], сдвинуть остальные, записать в конец. - Префиксные суммы:
p[i] = p[i-1] + a[i]; сумма отрезка — разность двух префиксов. - Двумерный массив
a[i][j]: i — строка, j — столбец; главная диагональ —i == j. std::setхранит только уникальные значения в отсортированном порядке.
Где чаще всего ошибаются
- Обращаться к
a[n]в массиве из n элементов. - Начинать поиск максимума с нуля.
- Путать строку и столбец в двумерном массиве.
Проверить себя
По этой же теме курса есть проверочная работа из 15 заданий на 30 минут. Проверка автоматическая, результат виден сразу — и по работе целиком, и по каждой теме.