массивы - это структуры данных最简单,最常用Структура данных представляет собой линейную табличную структуру данных, представляющую собой блок в памяти.连续место для хранения ограничено相同类型состоит из переменных有序集合. Каждая переменная в массиве называется元素.
Линейная таблица: линейная таблица буквально понимается как расположение данных, подобное линейной структуре, только с двумя направлениями, спереди и сзади. Все элементы в линейной таблице находятся во взаимно-однозначном отношении, за исключением головных и хвостовых элементов, остальные элементы связаны встык. В дополнение к массивам связные списки, очереди и стеки также являются структурами линейных списков.
Взяв в качестве примера целочисленные массивы, мы создадим целочисленный массивint[] array = new int[]{1,2,3,4};, в массиве хранятся элементы 1, 2, 3, 4. Тогда ситуация хранения массива выглядит следующим образом:
Диаграмма массива.png
на картинке выше粉色Сетка представляет единицу хранения, которая была занята,绿色Сетка представляет собой место хранения массива,白色Сетки представляют собой свободные ячейки памяти. Индексы массива начинаются с 0. Таким образом, соответствие между элементами и нижними индексами:
2. Преимущества и недостатки массивов
Когда дело доходит до преимуществ массивов, я думаю, большинство людей скажут:随机访问Это убойная функция, так почему же она может обеспечить произвольный доступ?
Я думаю, что есть два основных момента:
смежное пространство для хранения
Линейная структура таблицы
Именно потому, что это непрерывное пространство для хранения в памяти, и это линейная табличная структура, а передний и задний элементы находятся во взаимно однозначном соответствии, поэтому он может иметь характеристики произвольного доступа. в предыдущей статьеСтруктуры данных и алгоритмы — ВведениеСреди них мы ввели временную сложность и пространственную сложность, что здесь не к месту Например, если мы хотим найти третий элемент в массиве выше, то выводимarray[2]Можно получить значение третьего элемента, и выход здесь равен 3. Поскольку массив поддерживает произвольный доступ, временная сложность произвольного доступа согласно индексу равнаO(1), потому что его операция поиска выполняется только один раз.
Такая структура делает операцию запроса очень удобной, как достоинства, так и недостатки.Его операции вставки и удаления станут неэффективными, так как для обеспечения непрерывности данных необходимо выполнить большое количество перемещений данных для выполнения операций вставки и удаления.Работа. Если при произвольном доступе к массиву в это время произойдет доступ к индексу без значения, значение не будет получено. Если вы не переместите данные, чтобы заполнить дыры в середине, память не будет непрерывной. Мы подробно рассмотрим это в разделе Операции с массивами.
3. Основные операции с массивами
3.1 Добавление элементов
Вставьте в середину
Вставка в середину немного сложнее.Каждый элемент имеет свой индекс.Если элемент хочет быть вставленным в массив кроме первой и последней позиций, то вставленные элементы в этой позиции должны быть перемещены назад, чтобы дать новый Оставьте место для преемственности.
вставка хвоста
Случай вставки хвоста относительно прост, и элемент может быть непосредственно помещен в свободную позицию в конце массива, что эквивалентно операции обновления элемента.
QZJyrj.png
3.2 Удаление элементов
Процесс удаления и вставки прямо противоположен: если удаляемый элемент находится в середине массива, то последующие элементы необходимо сдвинуть вперед.
Для типов массивов многие языки предоставляют классы-контейнеры, такие как список Java.Если вы программист Java, то вы должны знать ArrayList и быть хорошо с ним знакомым.Каковы его преимущества по сравнению с массивами? Почему его часто используют в процессе разработки?Самым большим преимуществом является то, что он инкапсулирует операции с массивами, такие как вставка и удаление, упомянутые выше.Еще одним преимуществом использования ArrayList является то, что он поддерживает динамическое расширение.Когда контейнер невелик достаточно, он автоматически расширится в 1,5 раза, нам вообще не нужно заботиться о базовой логике реализации. Итак, когда более целесообразно использовать массив? Есть несколько моментов:
ArrayList не может хранить базовые типы данных, такие как int и long, которые необходимо инкапсулировать как Integer и Long. Операции упаковки и распаковки здесь имеют определенную потерю производительности.Если вы уделяете особое внимание производительности и хотите использовать базовые типы, вы можете выбрать массив.
Для простых операций хранения данных более эффективно выбирать массив.
При выполнении низкоуровневой разработки массивы могут использоваться чаще, например, в некоторых фреймворках. Все требует производительности.
5. Ссылка
«Комический алгоритм»
«Красота структур данных и алгоритмов»
6. В конце попросите внимания
На мой взгляд, есть три базовых знания, которые должны усвоить бэкенд-программисты."数据结构与算法","计算机系统","操作系统Linux". Разве мы не носим достаточно одежды в эту интернет-зимнюю эпоху? всю ночь не спал(纯属扯淡,哈哈) решил привести всех к совместному изучению трех базовых знаний.Открывающая серия этой серии - «Структуры данных и алгоритмы разрыва рук».После завершения каждой серии будет открыта следующая серия, так что не волнуйтесь. Вы можете обратить внимание на мой официальный аккаунт, продолжайте следить и учиться.
注意、注意 前方高能======>
Если вам интересна эта моя серия, вы можете обратить внимание на мой официальный аккаунт и провести вас по «сверхъестественной дороге», получить высокооплачиваемое предложение, стать техническим экспертом, стать большим заводом и выйти замуж.Белая, богатая и красивая девушка, Идя к пику жизни, я чувствую себя немного взволнованным, когда думаю об этом. (Ха-ха, позвольте мне взорваться 🐂)
Сюда, сюда, сюда, сюда, сюда с QR-кодом! ! !
Добро пожаловать, чтобы отсканировать код, чтобы следовать! ! !