Структуры данных и алгоритмы: с чего начать

  • 14 января, 16:22
  • 1281
  • 0

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

Не пугайтесь математики

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

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

Структуры данных и алгоритмы: с чего начатьСтруктуры данных и алгоритмы: с чего начать

Что такое структуры данных и алгоритмы?

Вообщем, структура данных - это способ организации данных, а алгоритм - это метод или шаблон для решения проблем.

Рассмотрим на примере: вы хотите найти определенную книгу в библиотеке. Как вы будете искать?

  1. Method #1: Вы можете проверять каждую полку, одну за другой, от начала до конца, пока не найдете нужную книгу.
  2. Method #2: Сначала вы можете найти книжный стеллаж в соответствии с категорией, которую вы ищете. Если книги расставлены по алфавиту или годам, просто подобрать нужную полку.

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

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

Как соотносятся структуры данных и алгоритмы?

Структуры данных и алгоритмы дополняют друг друга. Для конкретного алгоритма существует структура данных, и алгоритм обычно подходит для конкретной структуры данных.

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

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

С чего начать

Выберите несколько хороших книг и ресурсов

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

Визуализация поможет вам понять, как работает структура данных и алгоритмы. Вы можете найти хорошие анимации такого рода с сайта: visualgo.net.

Структуры данных и алгоритмы: с чего начать

Изучение основных структур данных

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

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

Вот одиннадцать базовых структур данных для начала:

array, linked list, stack, queue, hash table, map, heap, binary tree, trie tree, graph, skip list

Узнайте, как они работают, как они реализованы, их общие API-интерфейсы и как они работают в сложных условиях.

Кроме того, GeeksforGeeks имеет множество хороших практик для использования структур данных.

Изучение базовых шаблонов проектирования алгоритмов

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

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

Учитесь на практике

Тут конечно же вам путь на онлайн-платформы: 

  1. Leetcode: подробно описывает почти все распространенные вопросы интервью, задаваемые крупными компаниями (такими как Facebook, Google, Amazon); очень полезный ресурс для интервьюирования.
  2. HackerRank: имеет категории для структур данных и алгоритмов и предлагает уроки по математике, базам данных и безопасности. Можно даже участвовать в соревнованиях по программированию для развлечения.

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

Например, этот проект использует структуру данных с объединением, чтобы создать лабиринт, а также пытается реализовать алгоритмы поиска пути. 

Учитесь на реальных проектах

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

Структуры данных и алгоритмы: с чего начать

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

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

И помните: от вас никто не ожидает, что вы овладеете этими знаниями мгновенно. 


0 комментариев
Сортировка:
Добавить комментарий