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

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

[Пожалуйста, укажите источник для перепечатки]:nuggets.capable/post/684490…

написать впереди

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

Обычный трехуровневый университет в Сяолу, три года в университете - это в основном самообучение программированию.В конце концов, курсы, преподаваемые учителем, очень поверхностны.Учитель указывает точку знаний, чтобы рассмотреть большинство студентов с разными способностями к пониманию, поэтому для такого студента, как я, который любит докапываться до сути вещей, мне приходится тратить много времени на изучение программирования с самого начала моего первого года обучения. Что касается самообучения, то я больше внимания уделяю эффективности, откуда берется эффективность? Я считаю, что многие самообучающиеся программисты обращают внимание на методы и навыки, и метод обучения Сяолу сводится к непрерывному циклу из нескольких этапов, то естьМотивация, цели, практика, обратная связь, повышение стандартов.

мой фонд

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

моя учебная мотивация

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

моя цель

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

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

моя практика

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

Этап 1: Понимание структур данных

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

Шаг 2: Каждая структура данных имеет свои преимущества и недостатки, а также производительность Какой стандарт мы используем для измерения производительности структур данных и алгоритмов? Вторым шагом является изучение содержания анализа сложности, связанного со сложностью времени и пространственной сложности.Эта часть содержания очень важна, потому что структуры данных и алгоритмы, которые будут изучены позже, должны иметь стандарт измерения производительности.Решение проблем для выбора самые эффективные структуры данных и алгоритмы.

Шаг 3. Мы узнали о приведенных выше метриках производительности, и следующим шагом будет изучение наиболее часто используемых структур данных: массивов, связанных списков, стеков, очередей, хэш-таблиц, таблиц переходов, графов, деревьев, куч, деревьев словарей. структуры данных. Первый этап не требует от нас понимания этих структур данных и изучения следующих аспектов. Происхождение, функции, применимые условия, какие операции доступны, анализ временной сложности каждой операции и возможность ее оптимизации.В течение этого периода вы столкнетесь с различными проблемами и что делать, если возникнут проблемы.Я обычно иду в Baidu или Google в помощь другим Напишите краткое содержание статьи и запишите его в блокнот.

Этап 2: Глубокое погружение в структуры данных

Шаг 1: В этой книге записаны десять вышеперечисленных основных характеристик и условий использования, связанных со структурой данных, а затем мы начнем с самого начала проводить углубленное исследование каждой структуры данных.Во-первых, операции, связанные со структурой данных, такие как так как операции добавления, удаления, изменения, проверки и др. должны быть реализованы самостоятельно и запущены на машине.При написании кода необходимо обращать внимание на следующие моменты: граничные условия, указатели и спецификации кода.

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

Шаг 2: Вы можете спросить, на первом этапе у вас есть базовое представление о характеристиках каждой структуры данных. Какие книги или видео вы можете посмотреть, чтобы получить более глубокое понимание? Я больше не буду рекомендовать здесь видеоматериалы. Рекомендуйте книги, это не драка Реклама ха. Если мы хотим пойти глубже, нам нужна авторитетная книга данных, и будет авторитетное объяснение того, что мы хотим искать.Хотя книга «Введение в алгоритмы» очень толстая, но каждый раз, когда я ищу ее, я могу найти то, что я ищу, так это считается книгой.Я проверил словарь и расширил свою систему знаний.

Шаг 3: Глубокое обучение само по себе очень скучно и сложно. Затем мы анализируем примеры из реальной жизни, такие как игры в угадывание чисел. Мы можем подумать о том, как угадать правильное число в кратчайшие сроки. Может быть, вы думаете об использовании двоичного поиска. Ну давайте зададимся задачами бинарного поиска.В этом процессе мы должны спросить себя почему.Только так ваш уровень знаний будет расширяться.Например,если в бинарном поиске есть дублирующиеся данные,как это решить?

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

Этап 3: Получение структур данных

Шаг 1: На данный момент вы, возможно, многое узнали о структурах данных, но их сложно использовать, как вы можете использовать их в практических задачах? Первый шаг состоит в том, чтобы организовать, организовать разрозненные точки знаний перед ноутбуком, как это организовать? Мы можем использовать интеллект-карты для систематической организации знаний, будь то обзор и консолидация, это поможет нам еще больше укрепиться.

Шаг 2: После завершения вышеуказанной договоренности вы обнаружите, что в реальном проекте многие проблемы связаны с несколькими проблемами структуры данных.То, что мы решили поверхностно, относится только к одной структуре данных, затем попробуйте объединить структуру данных самостоятельно.Например , массивы и связанные списки, каждая структура данных имеет свои преимущества и недостатки.В процессе обучения вы обнаружите, что преимущества одной структуры данных являются недостатками другой структуры данных, или эта структура данных может быть решена.Проблемы могут сделать для проблем, которые не могут быть решены с помощью другой структуры данных.После повторного размышления их можно отсортировать, чтобы облегчить будущее расширение на этой основе.

Третий шаг: преобразование фактической проблемы в изученную структуру данных.При возникновении проблемы найдите подходящую структуру данных в соответствии с характеристиками проблемы или данных.Например, нам нужно быстро вставлять, удалять и запрашивать данные, и мы быстро получаем его в нашем мозгу.Какие структуры данных могут быстро реализовать вставку, удаление и запрос? Сбалансированные бинарные деревья, хеш-таблицы, таблицы переходов и т. д. Затем эти структуры данных фильтруются в соответствии с другим условием или характеристикой проблемы.

Шаг 4: Как фильтровать? Просто используйте анализ производительности, временную и пространственную сложность, о которых мы упоминали ранее, чтобы узнать, как выбрать разумное решение.

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

мой отзыв

Мы должны получать что-то каждый раз, когда решаем задачу или каждый раз просматриваем структуру данных Как одни и те же знания могут увеличить нашу прибыль? То есть постоянно возвращать информацию самому себе. Например, текущее решение конфликтов хэшей неприменимо в реальных проектах. Затем я буду возвращать эту информацию себе и спрашивать себя, есть ли лучшее решение. После получения обратной связи следующим шагом будет повышение уровня обучения.

Поднимите стандарт

Изучение структур данных всегда будет сталкиваться с узкими местами.Когда мы выйдем из узкого места, оно будет намного более плавным.Тогда вы спросите, есть ли возможность дальнейшего улучшения? Будут.Далее вы будете говорить о повышении собственных стандартов.Например,вы можете решать практические задачи в своей жизни,чтобы иметь возможность решать проблемы подсознательно без каких-либо справочных данных.Этот аспект предъявляет высокие требования к себе. эффективность работы, кажется, находится на очень высоком уровне. Я верю, что каждый однажды упражняется в этой способности посредством постоянной практики и обратной связи. Я верю вам.


Этот официальный аккаунт фокусируется на области интернет-технологий "front-end" и "структура данных". Популярный и простой текст и анимационные изображения заставят вас полюбить программирование.

一个不甘平凡的码农

Публичный аккаунт WeChat: невольный фермер кода