Я обнаружил, что структура данных и алгоритмы пугающие, и это похоже на то, что я никогда не смогу достичь как самоучка. Однако в какой-то момент мне захотелось стать лучшим программистом, который мог бы кодировать эффективно и со способностью учитывать объем памяти и продолжительность выполнения кода. Я делюсь тем, что узнал, когда изучаю эту тему с точки зрения человека-самоучки.

Что такое массив?

Массив похож на список данных. У каждого места есть свой адрес.

Приведенный выше пример представляет собой массив с именем 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!