Восхождение на вершину требует силы, будь то вершина Эвереста или вершина своей карьеры - Dr. A.P.J. Абдул Калам

Когда я начинал программировать, мне всегда было интересно, почему люди говорят, что структуры данных и алгоритмы очень важны. Я даже задал себе вопрос: используем ли мы структуры данных вообще в программировании? Почему все компании, такие как Apple, Google, Amazon, Facebook, Microsoft и т. Д., Концентрируют внимание на этой теме в каждом интервью? У меня в голове возникает множество вопросов о DSA (структурах данных и алгоритмах), поэтому я решил найти ответы.

Введение:

Давайте начнем с вопроса, что такое структура данных и что такое алгоритмы?

В эту эпоху мы видим огромное развитие технологий. С появлением больших данных, Hadoop, искусственного интеллекта, машинного обучения и др. Технологии вышли на новый уровень и стали сильно зависеть от данных. Без «Данных» ни один из них не достиг бы того уровня славы, который у него есть. Многие компании, включая Google, Amazon, Facebook, полагаются на эти данные для своего развития и улучшения.

Поскольку «Данные» очень важны, их нужно хранить осторожно. Мы часто сталкиваемся с ситуациями, когда мы ищем базовые вещи, такие как кошелек, ключи (я в основном это делаю), не помня, где мы оставили «или», если вы ищете книгу в стопке, которая складывается случайным образом ... насколько сложно это найти ? Что, если есть план, например, как библиотеки хранят книги на полках четко определенным образом, чтобы было очень легко найти ту, которую вы ищете?

Если каждый элемент (например, кошелек / ключи) является объектом, то в информатике он может быть представлен как данные

Просто хранить данные недостаточно. При необходимости это нужно сделать как можно скорее. Поэтому необходимо организовать и спланировать, как и где хранить данные. Существуют четко определенные структуры, удовлетворяющие вышеуказанным условиям, и именно здесь наши структуры данных играют огромную роль.

Структуры данных - это способ организации данных для эффективного использования. Это не просто организация, а специальный способ хранения. Обратите внимание на слово «Используется эффективно» в определении, которое означает не просто хранение, но и манипулирование (огромными) данными.

Управление данными включает в себя

  • Хранение данных
  • Преобразование данных, то есть вставка, удаление, поиск, сортировка, перемещение и т. Д. И, наконец,
  • Получение данных

Для этого нам нужна наиболее эффективная техника или действенный подход - и это отвечает определению «Алгоритм».

Алгоритм в целом - это последовательность шагов, которые вы предпринимаете для выполнения задачи или достижения своей цели. Распространяя это на компьютерный жаргон, можно сказать, что алгоритм - это последовательность шагов, которые необходимо выполнить для выполнения задачи в программе.

Звучит хорошо, но о каких типах структур данных и типах алгоритмов обычно говорят?

Давайте погрузимся в это

Типы структур данных и алгоритмы:

В компьютерной терминологии существует два типа структур данных.

  • Примитивные структуры данных: это основные типы данных, доступные почти во всех языках программирования. Примитивные типы данных используются для представления одиночных значений, таких как Integer, Float, Double, Boolean, Character, String.
  • Непримитивные структуры данных. Типы данных, производные от основных типов данных, известны как непримитивные типы данных. Эти типы данных используются для хранения группы значений, таких как массивы, LinkedList, стеки, очереди, деревья, графики и т. Д.

Ок !! Итак, теперь мы встретили новые слова, такие как массивы, LinkedList и т. Д. Что это? Давайте сделаем паузу и вернемся на мгновение, прежде чем углубиться в эти темы.

Для получения подробной информации о типах структур данных, я нашел это не менее полезным: Проверить здесь

Чтобы достичь эффективного способа манипулирования, у нас есть много алгоритмов, зависящих от структуры данных - некоторые из алгоритмов, например

  • Алгоритмы поиска: например, линейный поиск, двоичный поиск, поиск по подспискам и многое другое.
  • Алгоритмы сортировки: такие как быстрая сортировка, сортировка слиянием, пузырьковая сортировка, поиск в ширину, поиск в глубину и т. Д.

Когда мы говорим «эффективный способ манипуляции», что именно вы подразумеваете под «эффективным способом»?

На компьютерах мы запускаем программу для манипулирования объектами, и «Эффективный способ» - это фактор того, как вы описываете «Количество времени, затрачиваемое на манипулирование некоторым значением, также количество пространства, занимаемого вашей программой при попытке манипулировать этим значением» . Вкратце «Сложность времени и пространства»

Например: у вас есть проблема, и если у вас есть два решения, решение, которое выполняется в оптимизированное время, а также занимает меньше места в вашей оперативной памяти (именно здесь сохраняются все ваши значения переменных), считается эффективным решением.

Как я могу определить «сложность времени и пространства»?

Таким образом, наименьшее возможное время и наименьшее возможное пространство, занимаемое вашей программой, прямо пропорционально производительности системы. И это показатель для определения производительности системы, т. Е. Производительности программы, и он обозначен как Большое (O) обозначение.

Итак, чтобы подвести итог, способ хранения данных в системе и процесс, который необходимо соблюдать для хранения этих данных (это определяет DSA), должны быть очень эффективными, что определяется хорошо известной техникой Big (O) Notation

Давайте подробно обсудим каждый из них, а также «Существование и эволюция» непримитивных структур данных в следующих статьях (ссылки будут добавлены ниже).

Все накаляется… Следите за новостями…

Структуры данных начинаются с понимания нотации Big O: посмотрите мой пост с упрощенным объяснением и примерами

перед этим - ответить на наши вопросы

Используем ли мы структуры данных вообще в программировании?

  • Да. Либо прямо, либо косвенно, либо и то, и другое, т. Е. «Напрямую» путем определения производительности программы и ее оптимизации, и «косвенно» с использованием любой из примитивных / непримитивных структур данных - если вы знаете, как оценивать производительность с помощью нотации Big O, мы используем как прямой, так и косвенный (вместо этого мы должны использовать оба, чтобы называться эффективным разработчиком)

Почему все такие компании, как Apple, Google, Amazon, Facebook, Microsoft ... концентрируются на этой теме в каждом интервью?

  • Поскольку все крупные ИТ-компании полагаются на данные, которые являются базовой основой, они ожидают, что вы будете мастером в этих основах. Для данной проблемы, если вы найдете наиболее эффективный способ манипулирования данными для достижения результата, что означает, что вы нашли эффективное решение этой проблемы, и это прямо означает, что вы хороший программист, поскольку у вас есть навыки разработки эффективных алгоритмов = ›Это то, что компании ищут крутых разработчиков, и поэтому они сосредотачивают вопросы на DSA

А до тех пор - Удачного обучения!