«Как разработчик, ученый-компьютерщик, технический энтузиаст или кто-то другой, интересующийся областью технологий программного обеспечения, вы, несомненно, сталкивались с термином D.S & A (структуры данных и алгоритмы).

Это очень важный аспект, который должен/должен знать каждый, кто хочет стать специалистом в области технологий или устроиться на работу в качестве разработчика программного обеспечения, поскольку более 90% технологических компаний требуют в процессе найма людей привлекать людей в свою команду. .

Вы можете знать, как программировать, но вы плохой разработчик, если не знаете алгоритмов.

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

Алгоритм

Алгоритм — это набор инструкций, которым следует следовать для выполнения задачи.

Просто, верно?

Мы в основном проходим или используем алгоритм в нашей повседневной жизни. Ваш список дел — это алгоритм, а рецепт приготовления нигерийского джоллофа с рисом (о, Боже мой!) — это алгоритм.

Шаги, предпринятые для нахождения x в уравнении 2x+3 = 13, представляют собой алгоритм

Когда мы говорим об алгоритмах, два момента в основном помещаются в контекст.

  1. Зная, что существует установленный набор проблем, и важно знать, каковы решения, потому что есть вероятность, что ваше решение было предпринято в прошлом и было должным образом проверено на предмет его эффективности (что бы это ни было!, LOL)
  2. Частью знания алгоритма является не только знание того, что алгоритм существует, но и знание того, когда его применять, а это требует правильного понимания решаемой проблемы.

Вы должны быть в состоянии разобраться в проблеме и разбить ее на отдельные этапы, после чего вы сможете определить наилучшую структуру данных или алгоритм, наиболее подходящий для задачи. Этот простой процесс называется алгоритмическим мышлением (ура, вы алгоритмический мыслитель)

Наконец, изучение алгоритма дает

  1. Более глубокое значение сложности и эффективности (в основном, как сделать что-то в наилучшее возможное время с полной эффективностью под контролем.
  2. Иметь лучшее представление о том, как ваш код будет работать в разных ситуациях.

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

Структуры данных

Структура данных — это особый способ организации данных в компьютере, чтобы их можно было эффективно использовать.

Как и в реальной жизни, мы узнаем, как хранить определенные предметы, основываясь на том, что они собой представляют и как мы планируем получить к ним доступ.

  • Ваши чипсы в банке с чипсами (взял это с нутеллой вчера у моего кузена, LOL)
  • Ваши кубики сахара в коробке
  • Ваши яйца в ящиках для яиц, бла-бла-бла — все это примеры структур данных (хотя в реальной жизни!)

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

Основные операции, которые могут быть выполнены в любой структуре данных:

  • Доступ
  • Вставка
  • Удаление и,
  • Поиск

Вы должны знать, что не существует идеальной структуры данных. Каждая структура данных имеет свои сильные и слабые стороны, и вы должны рассмотреть компромиссы, прежде чем выбрать ту, которая подходит для вашего использования, способ выделить сильные и слабые стороны структуры данных. с помощью математической концепции, называемой нотацией Big-O.

Обозначение Big-O просто представляет наихудший случай требований к времени выполнения или пространству по мере увеличения размера входных данных (данных).

По мере роста вашего входного размера (данных) сколько времени требуется вашему алгоритму для запуска и сколько места в памяти требуется алгоритму?

Наиболее распространенные обозначения Big-O:

  • Постоянное время, Big-O(1): независимо от размера ввода время выполнения остается неизменным.
  • Линейное время, линейное время O (N): по мере увеличения размера ввода время выполнения увеличивается линейно (последовательно)
  • Квадратичное время, O(N²): по мере роста размера ввода время выполнения увеличивается квадратично.
  • Логарифмическое время, O (log N): по мере роста размера ввода время выполнения увеличивается логарифмически.

Распространенные типы структуры данных

1 Массив: представляет собой линейную структуру данных фиксированного размера, используемую для элементов одного типа в смежных местах. Эти местоположения также называются индексами.

В компьютере эти индексы представляют расположение объекта в памяти.

Примером массива на практике может быть расположение яиц в коробке / ящике для яиц.

Примером компьютерного массива является

Языки = [php, javascript, python, C++]

Сильные стороны

  • Доступ к массивам можно получить в постоянное время, если известен индекс (местоположение) объекта.

Слабость

  • Массивы в основном имеют фиксированный размер (за исключением случая динамических массивов).
  • Поиск объекта в массиве очень медленный, так как поиск выполняется последовательно (особенно когда индекс неизвестен)

2 Связанный список: это место, где у нас есть узел, в котором хранятся данные, и эти узлы имеют указатели, указывающие на другие узлы.

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

Примером связанного списка практически являются связанные цепочки для ключей (одна цепочка для ключей соединена с другой, чтобы сформировать большую цепочку), поскольку эти ссылки являются указателями, это дает нам некоторые интересные преимущества по сравнению с массивами.

Сильные стороны

  • Чтобы добавить узел (объект) в связанный список, вам нужно всего лишь изменить указатель в связанном списке, как и в связанной цепочке для ключей, просто отцепив другую цепочку для ключей.
  • Вставка и удаление происходят очень быстро и за постоянное время
  • В отличие от массива, дискретного ограничения размера нет (динамический размер).

Слабость

  • Они занимают больше памяти из-за указателей.

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

1 Стек: представляет собой линейную структуру данных, оптимизированную для порядка «последний пришел – первый вышел» (LIFO). Примером стека является контейнер Pringles (последний пришел, первый ушел). когда вы можете взять чипсы только сверху, это называется функция выталкивания, а если вы хотите вернуть чипсы обратно, это называется функцией выталкивания.

т. е. добавление в стек называется PUSH, а удаление из стека — POP.

Сильные стороны

  • Оптимизирован для заказа LIFO

Слабость

  • Поиск занимает время (поиск Pringles требует, чтобы вы достали все Pringles, прежде чем вы сможете получить требуемый или указанный Pringles)
  • Работает только для заказа на поиск LIFO

2 Очередь: как следует из названия, так же, как и очередь людей, ожидающих обслуживания в аэропорту или банке, она следует порядку «первым пришел – первым вышел» (FIFO), другим также ссылайтесь на него как на первый пришедший, первый обслуженный

Когда вы добавляете в очередь, она называется Enqueue (вы добавляете в конец структуры данных), а когда вы удаляете из очереди, она называется Dequeue (забирает из передней части стека).

Сильные стороны

  • Вставка и удаление происходит в постоянное время
  • Главное преимущество — заказ на поиск FIFO.

Слабость

  • Поиск утомительный и происходит в линейное время

Итак, вот основные структуры данных, которые вам нужно знать, чтобы начать работу в качестве разработчика или любого, кто заинтересован в изучении структур данных.

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

Для начала просмотрите учебник FreeCodecamp по алгоритмам и структуре данных, полный курс для начинающих (вам понравится), щелкните ссылку ниже, чтобы посмотреть его на YouTube, https://www.youtube.com/watch?v =8hly31xKli0&t=763с

Спасибо за чтение.

Чао!!!