4.1 Определение массива и его свойства
Массив — это структура данных, представляющая собой упорядоченный набор элементов одного типа, расположенных в смежных ячейках памяти. Каждый элемент массива имеет уникальный индекс, который используется для доступа к нему.
Здесь показан простой массив размером 4, содержащий элементы (1, 2, 3 и 4).
Свойства массива:
- Фиксированный размер: Размер массива задаётся при его создании и не может изменяться в процессе выполнения программы.
- Однородность элементов: Все элементы массива должны быть одного типа (например, целые числа, строки).
- Последовательное расположение в памяти: Элементы массива хранятся в смежных ячейках памяти, что обеспечивает быстрый доступ по индексу.
- Быстрый доступ по индексу: Доступ к любому элементу массива осуществляется за постоянное время
O(1).
4.2 Примеры использования массивов
Давайте рассмотрим примеры использования массивов, которые вы уже можете знать:
Хранение данных фиксированной длины
Дни недели, месяцы года:
# Создание массива с днями недели
days_of_week = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
print(days_of_week[2]) # Вывод: Wednesday
Матрицы и многомерные массивы
Матрица 3x3:
# Создание матрицы 3x3
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
print(matrix[1][1]) # Вывод: 5
Использование в алгоритмах сортировки
Сортировка массива чисел:
# Сортировка массива чисел
numbers = [5, 2, 9, 1, 5, 6]
numbers.sort() # Сортировка массива
print(numbers) # Вывод: [1, 2, 5, 5, 6, 9]
Буфер для хранения временных данных
Буфер для чтения данных из файла:
# Создание буфера размером 1024 байта
buffer = [0] * 1024
print(len(buffer)) # Вывод: 1024
4.3 Основные операции с массивами
Важно! Класс list в Python является динамическим массивом, он может менять свой размер в процессе работы. Более подробно о динамических массивах вы узнаете через несколько лекций.
Основные операции: доступ по индексу, вставка, удаление
Доступ по индексу
Доступ к элементу массива осуществляется с помощью индекса, который указывает на его позицию.
# Доступ к элементам массива по индексу
arr = [10, 20, 30, 40, 50]
print(arr[2]) # Вывод: 30
print(arr[-1]) # Вывод: 50 (последний элемент)
Вставка
Вставка элемента в массив может требовать сдвига всех последующих элементов, чтобы освободить место для нового элемента.
Пример (вставка элемента в середину массива):
# Вставка элемента в массив
arr = [10, 20, 30, 40, 50]
# Вставка 25 на позицию 3
arr.insert(2, 25) # Позиция 3 соответствует индексу 2
print(arr) # Вывод: [10, 20, 25, 30, 40, 50]
Удаление
Удаление элемента из массива может требовать сдвига всех последующих элементов, чтобы заполнить освободившееся место.
Пример (удаление элемента):
# Удаление элемента из массива
arr = [10, 20, 30, 40, 50]
# Удаление элемента на позиции 3
arr.pop(2) # Позиция 3 соответствует индексу 2
print(arr) # Вывод: [10, 20, 40, 50]
4.4 Преимущества и недостатки использования массивов
Рассмотрим преимущества и недостатки использования массивов:
Преимущества:
- Быстрый доступ по индексу: Доступ к любому элементу массива осуществляется за постоянное время
O(1), что делает массивы очень эффективными для чтения данных. - Простота реализации: Массивы просты в понимании и использовании, их легко реализовать и применять в различных задачах.
- Низкие накладные расходы: Массивы занимают меньше памяти по сравнению с более сложными структурами данных, такими как связные списки.
Недостатки:
- Фиксированный размер: Размер массива задаётся при его создании и не может быть изменён. Это означает, что нужно заранее знать необходимый размер массива или использовать динамические массивы, которые могут увеличиваться по мере необходимости.
- Затраты на вставку и удаление: Вставка и удаление элементов могут быть затратными по времени, так как требуют сдвига элементов. В худшем случае вставка или удаление элемента в середине массива занимает
O(n)времени. - Неэффективное использование памяти: Если массив используется не полностью, то оставшиеся ячейки памяти остаются незаполненными, что может привести к неэффективному использованию памяти.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ