4.32 из 5
4.32
105 отзывов на Udemy

Алгоритмы и структуры данных от А до Я

Станьте лучшим программистом, улучшив свои навыки и пройдите собеседование. Для C# и Java разработчиков.
Инструктор:
Илья Фофанов
871 студент зачислен
Реализация основных структур данных: список, стек, очередь и понимание того как они устроены
Корректное использование структур данных встроенных в BCL
Подготовка к собеседованиям, на которых вас будут мучить алгоритмами
Деревья, хеш-таблицы и др. структуры данных
Различные алгоритмы

В этом курсе мы пройдём основные алгоритмы и структуры данных. Примеры кода написаны на C#, однако 99% материала будет ясно любому Java-программисту, поскольку синтаксис языков очень схож, а примеры кода алгоритмов и структур данных так вообще будут почти полностью совпадать и в C# и в Java. В курсе есть лишь несколько лекций посвящённых исключительно библиотекам C#.

Зачем изучать алгоритмы и структуры данных?

Алгоритмы и структуры данных составляют основы программирования.

  • Понимание алгоритмов и структур данных – одно из самых важных
    требований для устройства на работу в хорошие компании.

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

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

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

  • Более мощное «железо» – не всегда хорошее/доступное решение проблем связанных с производительностью. Иногда, возникает необходимость разрабатывать программы для очень низко производительных устройств. Использование какого-либо железа зачастую так же зависит от бюджета заказчика, поэтому далеко не всегда выбор железа диктуется разработчиком.

  • Понимание того, что происходит «под капотом» весьма желательно. Хотя бы на один уровень в глубину. Действительно, если вы не понимаете как устроен список, иногда вы будете принимать не оптимальные или вообще неверные решения.

Почему этот курс?

Вы можете меня спросить «почему я должен взять именно ваш курс»? И вот мой ответ:

  • этот курс покрывает множество тем

  • я старался сделать этот курс не слишком сухим

  • курс посвящён не только алгоритмам и структурам данных, но также освящает внутреннее устройство структур данных и алгоритмов встроенных в основную библиотеку классов .NET (библиотека классов в .NET Core в плане структур данных и алгоритмов устроена точно так же)

  • курс практический с домашними заданиями и решениями

  • курс поможет вам пройти технические собеседования

  • курс сделан профессиональным разработчиком с большим реальным опытом

  • и множество др. причин 🙂

Что внутри курса?

На данный момент курс покрывает следующие темы:

  • Введение в алгоритмы и структуры данных: структура данных, абстрактный тип данных,
    разница между этими понятиями. Что такое алгоритм и почему всё это для нас важно?

  • Введение в анализ алгоритмов: сколько времени займёт исполнение программы,
    построение log-log графика, аппроксимации, порядок роста сложности (Big-O нотация), потребление памяти

  • Массивы: массивы в C#, массивы в памяти, сложность операций на массивах

  • Алгоритмы сортировки: пузырьковая, выборкой, вставками, рекурсия, Шелл-сортировка, слиянием, быстрая, стабильность алгоритмов сортировки

  • Списки: List встроенный в BCL, узлы (ноды), связный список (односвязный, двусвязный),
    LinkedList встроенный в BCL

  • Стек: теория и практика, на массиве,
    на связном списке, встроенный в BCL

  • Очереди: теория и практика, на массиве, кольцевой буфер,
    на связном списке, встроенная в BCL

  • Алгоритмы поиска: линейный, бинарный

  • Символьные таблицы: введение, API, таблицы на последовательном поиске,
    таблица на бинарном поиске

  • Хеш-таблицы: введение, хеширование, GetHashCode, подходы к разрешению коллизий: раздельные цепочки и линейное пробирование, тип Dictionary встроенный в BCL, типы представляющие множества встроенные в BCL

  • Деревья: двоичное дерево поиска и его реализация (больше будет добавлено в будущем)

  • Пирамиды: введение, пирамиды и массивы, пирамидальная сортировка

  • Различные алгоритмы: эта секция будет расширяться, а пока покрывает алгоритм «решето Эратосфена»

Зачисляйтесь на курс и вы не пожалеете! Не забывайте, что Udemy даёт 30 дней на возврат денежных средств, так что даже если вам курс не понравится – вы ничем не рискуете, всегда можно вернуть деньги парой кликов.

Материалы и коммьюнити

1
Исходный код курса

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

1
Введение в структуры данных
2
Введение в алгоритмы

Введение в анализ алгоритмов

1
Временная сложность
2
Строим log-log график. Прогнозируем время работы алгоритма.
3
Аппроксимации
4
Порядок роста

Массивы

1
Обзор массивов в C#
2
Массивы в памяти
3
Временная сложность операций на массиве
4
Операции на массивах в C#

Алгоритмы сортировки

1
Пузырьковая сортировка (теория)
2
Пузырьковая сортировка (реализация)
3
Устойчивость (стабильность) алгоритма сортировки
4
Сортировка выборкой (теория)
5
Сортировка выборкой (реализация)
6
Сортировка вставками (теория)
7
Сортировка вставками (реализация)
8
Рекурсия
9
Сортировка Шелла (теория)
10
Сортировка Шелла (реализация)
11
Сортировка слияниями (теория)
12
Сортировка слияниями (реализация)
13
Быстрая сортировка (теория)
14
Быстрая сортировка (реализация)

Списки

1
Тип List в BCL
2
Узел (Node) - базовый строительный блок
3
Связные списки
4
Односвязный список (теория)
5
Односвязный список (реализация)
6
Двусвязный список (теория)
7
Двусвязный список (реализация)
8
Тип LinkedList в BCL

Стек (Stack)

1
Стек (теория)
2
Реализация стека (на массиве)
3
Реализация стека (на связном списке)
4
Стек из BCL. Характеристики стека

Очередь (Queue)

1
Очередь (теория)
2
Реализация очереди (на массиве)
3
Кольцевая очередь (теория)
4
Кольцевая очередь (реализация)
5
Реализация очереди (на связном списке)
6
Тип Queue в BCL

Алгоритмы поиска

1
Линейный поиск
2
Бинарный поиск (теория)
3
Бинарный поиск (реализация)

Символьные таблицы

1
Введение в символьные таблицы
2
API символьных таблиц
3
Последовательный поиск (тривиальный подход)
4
Последовательный поиск: ДЗ
5
Последовательный поиск: решение ДЗ
6
Символьная таблица на бинарном поиске
7
Символьная таблица на бинарном поиске: ДЗ
8
Символьная таблица на бинарном поиске: решение ДЗ
9
Заключение

Символьные таблицы и Хеширование (Хеш-таблицы)

1
Введение в хеш-таблицы
2
Хеширование в примитивных типах и GetHashCode
3
GetHashCode в ссылочных типах и типах-значениях
4
Значимость хеширования. Реализация GetHashCode
5
Разрешение коллизий
6
Метод раздельных цепочек
7
Метод раздельных цепочек: ДЗ
8
Метод раздельных цепочек: решение ДЗ
9
Метод линейного пробирования
10
Словари в BCL
11
Множества. Множества в BCL

Деревья

1
Введение в деревья
2
Двоичное дерево поиска (Binary Search Tree - BST)
3
Простая реализация BST. Часть 1
4
Простая реализация BST. Часть 2
5
Операция удаления в BST (теория)
6
Операция удаления в BST (реализация)

Пирамида и пирамидальная сортировка

1
Определение пирамиды
2
Пирамида и массив
3
Операция вставки (теория)
4
Реализация пирамиды
5
Операция удаления (теория)
6
Операция удаления (реализация). Реализация Peek.
7
Характеристики операций на пирамиде
8
Пирамидальная сортировка (теория)
9
Пирамидальная сортировка (реализация)
10
Очереди с приоритеом

Различные алгоритмы

1
Решето Эратосфена

Бонус

1
Бонусная лекция
You can view and review the lecture materials indefinitely, like an on-demand channel.
Definitely! If you have an internet connection, courses on Udemy are available on any device at any time. If you don't have an internet connection, some instructors also let their students download course lectures. That's up to the instructor though, so make sure you get on their good side!
fd972dfca29ff91fda649e47f74476b0
3-дневная гарантия возврата денег

Включает

13 часов видео по запросу
5 статей
Полный пожизненный доступ
Доступ с мобильного и ТВ
Сертификат об окончании
Алгоритмы и структуры данных от А до Я
Цена:
0,22 ₽ 3,490 ₽