Я обнаружил, что структура данных и алгоритмы пугающие, и это похоже на то, что я никогда не смогу достичь как самоучка. Однако в какой-то момент мне захотелось стать лучшим программистом, который мог бы кодировать эффективно и со способностью учитывать объем памяти и продолжительность выполнения кода. Я делюсь тем, что узнал, когда изучаю эту тему с точки зрения человека-самоучки.
Что такое массив?
Массив похож на список данных. У каждого места есть свой адрес.
Приведенный выше пример представляет собой массив с именем arr, который содержит 5 целых чисел от 1 до 5, каждое пространство данных имеет свой собственный адрес, который начинается с 0, поскольку компьютеры считают с 0. Мы нужен адрес, чтобы куда-то пойти, аналогично компьютеру нужен адрес, чтобы проверить, есть ли данные в ящике. Например, чтобы получить 3, его можно выразить как arr [2]. Этот пример выше может быть выражен на C следующим образом:
int arr [5] = {1, 2, 3, 4, 5}
Это означает, что я создаю массив длиной 5 и его именем arr, и он будет содержать целые числа, объявив int перед его именем.
Изменение данных в массиве
Давайте изменим данные в arr [3], где 4 соответствует 13.
arr [3] = 13;
Теперь наш массив arr выглядит следующим образом:
{1, 2, 3, 13, 5}
объем памяти
Чтобы понять, как структуры данных работают за кулисами, нам нужно иметь некоторое представление о памяти, которая, по сути, является хранилищем для компьютера.
Есть два механизма для хранения данных на вашем компьютере. Одна из них - это память, которая обрабатывает временные данные, называется RAM, другая - хранилище, которая обрабатывает постоянные данные. Поэтому, если ваш компьютер выключен, когда вы работали над чем-то, что вы не сохранили, прогресс пропадет.
Разница между ОЗУ и хранилищем
Как видно из приведенного выше графика, RAM (память) намного быстрее получает и читает данные, но ее пространство намного меньше. С другой стороны, в хранилище гораздо больше места, но из него медленнее получать данные.
Подробно о массивах и памяти
Память похожа на ящик с пробелами на нашем компьютере, размер каждого поля - байт.
Кроме того, он имеет произвольные числа адресов и хранит данные в двоичных числах, которые являются своего рода «языком, который понимает компьютер».
Байт и бит
Допустим, вы собираетесь хранить целое число в переменной a, вы можете хранить другие типы данных, такие как десятичные числа, строки, для простоты мы собираемся хранить только целые числа на этот раз. Компьютеры могут читать только 1 и 0, они называются двоичными числами, и именно так данные выглядят изнутри. целые числа - это 32 бита 1 и 0, и их можно выразить так.
1 = 00000000000000000000000000000001 ( 0 * 31, 1*1)
1 бит = 1 или 0
8 бит = байт
Следовательно, целое число занимает 4 байта памяти (32 бита).
Недостаток использования массива
Массив - это последовательность данных, как я упоминал ранее, поэтому это означает, что данные в массиве должны храниться непрерывно. Сохраним наш массив arr,, который мы создали ранее. int arr [5] = {1, 2, 3, 4, 5}
Насколько мне известно, у массивов есть несколько недостатков.
Во-первых, как видите, мы не можем хранить наш массив в красных пространствах, потому что он маленький, но мы можем хранить его в зеленых насаждениях. Это означает, что может быть неэффективность в управлении памятью.
Во-вторых, когда вы добавляете новые данные в массив, массив не сможет создать или расширить новое пространство для новых данных, поскольку длина уже фиксирована, поэтому будет создана новая длина массива, которая должна быть занять больше места.
Вот здесь-то и пригодится Связанный список. О связанном списке я расскажу в следующем посте.
Понравилась эта статья? Если да, то получите больше похожего контента, подписавшись на наш канал на YouTube в Decoded!