1. Алгоритмы и структуры данных. Введение. Массивы
«Технопарк Mail.ru Group» при МГТУ им. Н. Э. Баумана.
Курс «Алгоритмы и структуры данных».
Лекция № 1: «Введение в курс. Массивы».
Лектор - Степан Мацкевич.
В этом видео:
• Анализ алгоритмов и понятие вычислительной сложности задачи. O-нотация.
• Вычисление n-ого числа Фибоначчи.
• Проверка числа на простоту.
• Быстрое возведение числа в целую степень (за log(n)).
• Массивы. Однопроходные алгоритмы.
• Линейный поиск. Поиск минимального элемента.
• Бинарный поиск. Рекурсивный и нерекурсивный алгоритмы.
• Структура данных «Динамический массив». Амортизированное время добавления элемента.
Другие лекции курса: bit.ly/2dntXZ2
Цель курса - обучить основам алгоритмического программирования, привить практические навыки решения задач с помощью базовых алгоритмов и структур данных, сформировать правильное представление о времени работы и эффективности различных алгоритмов и структур данных.
Курс представляет собой изучение базовых алгоритмов и структур данных, необходимых программистам для качественного решения ежедневных задач. В курсе представлены элементарные алгоритмы для работы с массивами, сортировки. Рассказывается об элементарных структурах данных: стек, очередь, списки, куча. Также в курс включены различные деревья поиска и хеш-таблицы. Курс даёт представление о том, как оценивать эффективность алгоритмов, все алгоритмы курса оцениваются по времени работы и по количеству используемой дополнительной памяти.
Получаемые навыки
• Основные структуры данных: массив, стек, очередь, дек, очередь с приоритетом.
• Алгоритмы сортировки: квадратичные, пирамидальная, сортировка слиянием, QuickSort, поразрядная.
• Алгоритмы поиска порядковых статистик.
• Методы оптимизации в задачах динамического программирования.
• Структуры данных для создания эффективных контейнеров: хеш-таблицы, двоичные деревья поиска, АВЛ-деревья, декартовы деревья.
• Алгоритм кодирования Хаффмана для сжатия данных.
Курс научит
• Реализации алгоритмов и их комбинации на языке C++ для решения поставленных задач.
• Поиску применения классическим алгоритмам в задачах, возникающих в процессе разработки ПО.
• Методам отладки кода на языке C++.
• Навыкам оценки сложности алгоритмов.
VK Team - это миллион возможностей проявить себя. Мы делаем современные и быстрые интернет-сервисы, доступные каждому. На этом канале делимся опытом компании VK, рассказываем о технологиях, наших образовательных проектах и жизни команды.
😎 Сообщество ВКонтакте: vkteam
👨🎓 VK Образование: education.vk.company/
🏆 Чемпионаты: cups.online/
👨💻 Карьера в VK: team.vk.company/
Пікірлер: 24
Спасибо, было интересно
У Вас жуки в описании числа Фибоначчи(Fib(0) = 0) и соотв. в двух вариантах кода. В первом варианте: при n==0 возвращаем 0, во втором варианте: переменная prev должна инициализироваться 0, а не 1(Fib(18) у вас 4184, а у wolfram-alpha&исправленных вариантах кода Fib(18)=2584). Спасибо за лекции, очень познавательно.
Кто придумал на слайде зеленым выделять текст? 8|
@dasydasy9268
Жыл бұрын
@Sergii S не яц не глядя как и в г😂😂🎉😅🎉😂😂😮😮😂😮😊ш😅
Отличная лекция и лектор, мне понравилось. Всё доходчиво, понятно и подробно объясняет.
33:06 Вопрос. Там на слайде, в решении задачи стоит префикс (++i). Может я чет путаю, но разве из этого не вытекает, что программа игнорирует 2 и начинает вычисление с 3? В плане ожидается, что зайдя в if программа посчитает (n%2), но вместо этого расчет сразу пойдет с (n%3).
@plermicrag
7 жыл бұрын
Нет разницы как писать ++i или i++, поскольку следующий шаг счетчика рассчитывается только после выполнения тела цикла. Может быть, когда-то давно ++i работало быстрее, поэтому во многих учебниках можно встретить такой вариант. Это скорее всего калька из учебника или у них в ABBYY принят такой стиль.
@altrapper
7 жыл бұрын
plermicrag, дело не в том, что работает быстрее или медленнее, а в том что префикс прибавляет единицу в начале тела цикла (до проверки в if), а постфикс в конце (т.е. после). А это говорит о том, что предоставленный текст не верен -_-
@MrZverify
7 жыл бұрын
сразу видно, что убил несколько часов на поиск неочевидного бага)
@altrapper
7 жыл бұрын
Игорь Садовников как бы нет...-_- заметил тупо при просмотре... А собственно в чем неочевидность то?
@user-vitya1
6 жыл бұрын
тоже заметил, наверное, так и надо, они же не могли сделать настолько очевидную ошибку. Возможно, мы чего-то не понимаем... хотя, вряд ли с:
На каком языке програмировании этот урок?
@electronic008
11 ай бұрын
C++
Ни чего не понятно Побольше примеров нужно Допустим есть задание и как решается Практика
Вот какой смысл таких видеолекций, где лектор запинаясь пересказывает текст из учебника?
@artemshchablii8374
7 жыл бұрын
Более менее смотреть можно на х1.5 скорости
@crea7or
7 жыл бұрын
Кто бы написал - что это за учебник.
Это о чём
на 24 минуте переменная объявляется в цикле, что за??????? Кто так делает??? Вы же пишите алгоритмы что бы уменьшить их время!!!!!
@alxvseti
5 жыл бұрын
Не переживай, Артур, - компилятор соптимизирует. Так читабельней и кратче
Этот хуже Бабичева, уж простите.
@crea7or
7 жыл бұрын
Да, мне кажется, что практических вещей только маловато. Не дело это использовать выдуманные примеры. Не для школьников же материал.
@crea7or
7 жыл бұрын
Ну так не школьники, он же про матанализ там говорит.
Под такие лекции только спать! Безумно скучно, особенно если ты только начинаешь вникать в тему🤦🏼♀️