О курсе
На курсе «Алгоритмы и структуры данных на C#» рассматриваются наиболее распространенные способы компоновки данных для удобной и одновременно быстрой их обработки и оптимальные алгоритмы работы с ними.
Уже на первом уроке подробно рассматриваются вопросы оценки времени выполнения алгоритмов как составной части решения поставленной задачи, поскольку для задач больших размеров важную роль играет не только мощность вычислительных средств, но и эффективность алгоритма. Далее будут рассмотрены основные структуры данных – односвязные и двухсвязные списки, динамические массивы, стеки, очереди, деревья и множества.
На курсе будут подробно рассмотрены алгоритмы сортировки, понятия «хэш-таблицы» и «АВЛ-деревья». Также рассмотрим структуру данных «Граф», которая широко используется в жизни. Освоим метод динамического программирования для решения различных задач. Заключительный урок будет посвящен решению практических примеров – задачи коммивояжера, задачи о ханойских башнях и другие интересные задания.
Алгоритмы и структуры данных, которые мы рассматриваем в данном курсе, можно реализовать на любом языке программирования, нами для этого будет использоваться язык С#, базовых знаний которого и знаний основ ООП будет вполне достаточно для понимания материала.
Предварительные Требования
- Уверенное владение персональным компьютером
- Базовые знания языка программирования C#
Вы научитесь
- Понимать принципы построения и использования структур данных и алгоритмов для их обработки.
- Определить сложность алгоритма.
- Реализовать наиболее распространенные алгоритмы и модернизировать их.
- Различать преимущества использования тех или иных структур в каждом конкретном случае.
- Понимать особенности структур данных, таких как связные списки, динамический массив, Stack, Queue, Set, хэш-таблицы, деревья, графы, бинарное дерево поиска, АВЛ-дерево и понимать алгоритмы для работы с этими типами данных.
- 5 ч 14 м
- 24.04.2024
- 10
- 24.04.2024
- украинский
Что входит в курс
Основная цель этого урока – ознакомить студентов со структурами данных и понятием алгоритма. Рассмотрим асимптотическую сложность алгоритма, односвязные и двухсвязные связанные списки. Также научимся использовать О-нотации.
На занятии рассматриваются главные структуры данных. Объясняется политика роста динамического массива. Разберем главные методы работы с этими структурами данных и их реализацию, объединение, сечение, разность, симметричную разность двух множеств.
На занятии разъясняются главные виды сортировки данных. Демонстрируется их сущность и реализация. Сравниваются разные методы сортировки для разных назначений и предпосылок. Кратко объясняется суть новой сортировки Timsort.
На уроке рассматриваются две структуры данных: хэш-таблица и дерево. Разъясняется суть хэш-таблицы, принцип ее работы, хэш-функция и коллизии в хэш-таблицах. Рассматривается структура данных "Дерево", подробнее объясняется бинарное дерево поиска и добавление узлов в дерево.
Данный урок посвящен рассмотрению методов работы с бинарным деревом поиска: удаление узла из дерева (3 варианта удаления), поиск узла в дереве, прямой, обратный и симметричный обход дерева. Рассматривается сущность АВЛ-дерева как модернизация бинарного дерева поиска. Разъясняется суть балансировки АВЛ-дерева и способы реализации балансировки.
На уроке рассматривается популярная и сложная структура данных "Граф". Также поговорим о введении в теорию графов, способах задать граф и два варианта поиска по графу: в ширину и глубину.
На уроке рассматриваются темы по теории графов, например, связные компоненты, цикл Эйлера. Поговорим об известном алгоритме Ли. Объясняется нахождение кратчайшего пути между вершинами графа. Демонстрируется алгоритм дейкстры.
На занятии глубже рассмотрим теорию графов. Кратко излагается сущность и принцип алгоритма Флойда-Уоршелла. Разъясняется и показывается топологическая сортировка, а также поиск компонентов связности через обход в глубину.
На уроке рассматривается подход динамического программирования к решению многих задач. Объясняется сущность и принцип разных приёмов. Демонстрируются типовые задачи и их решение.
На занятии рассматриваются следующие задачи: Ханойские башни, задачи коммивояжера, задачи для рюкзака.