Очередной пост в рамках нашего цикла лекций Технопарка. В этот раз мы предлагаем вашему вниманию курс, посвящённый алгоритмам и структурам данных. Автор курса — Степан Мацкевич, сотрудник компании ABBYY.
Лекция 1. Основы
Начало первой лекции посвящено обсуждению основных понятий, на которых строится вся дальнейшая программа курса: что такое алгоритм и структура данных. Описаны базовые виды алгоритмов, их характеристики и методы анализа. Далее рассматриваются примеры создания алгоритмов для вычисления чисел Фибоначчи, проверки числа на простоту, быстрого возведения числа в целую степень. В конце лекции рассказывается об особенностях использования алгоритмов для работы с массивами: создание однопроходных алгоритмов, поиск минимального элемента, бинарный поиск.
Лекция 2. Элементарные структуры данных
Вторая лекция посвящена изучению элементарных структур данных. В начале даётся определение понятия «абстрактного типа данных». Далее лектор рассказывает о том, что такое амортизационный анализ и каковы его особенности.
Оценка сложности алгоритмов | О большое | Алгоритмы и структуры данных
- массив и динамический массив;
- стек, очередь и дэк;
- очередь с приоритетом;
- связные списки: однонаправленные и двунаправленные;
- двоичная куча.
Лекция 3. Сортировки (часть 1)
- сортировка одного, двух и трёх элементов;
- сортировка выбором;
- сортировка вставками;
- сортировка пузырьком;
- быстрая сортировка Хоара.
Лекция 4. Сортировки (часть 2)
- сортировка слиянием, в том числе двух упорядоченных массивов;
- сортировка подсчётом;
- поразрядная сортировка;
- пирамидальная сортировка и ряд других.
Лекция 5. Хеш-таблицы
Из этой лекции вы сначала узнаете, что такое метод поиска хешированием, какие бывают хеш-функции (в том числе хеш-функции строк). Затем идёт подробное рассмотрение хеш-таблиц и способов их применения: что они собой представляют, каковы основные методы разрешения коллизий (метод цепочек и метод открытой адресации), а также методы вставки, удаления и поиска элементов. Напоследок проводится сравнение хеш-таблиц по затратам времени и памяти.
Лекция 6. Деревья
Последняя лекция в рамках курса АиСД посвящена таким структурам данных, как деревья. Разумеется, в начале лекции дается определение понятия «деревья», рассматриваются их характеристики и приводятся примеры. Затем вы узнаете, как деревья представлены в памяти, какие есть способы обхода дерева. Далее рассматриваются так называемые двоичные деревья поиска и группа самобалансирующихся деревьев: декартовы и АВЛ-деревья. И в завершение лекции рассказывается об абстрактном типе данных «ассоциативный массив».
Источник: habr.com
Лекция 14. Данные и алгоритмы Данные и алгоритмы
Программа состоит из алгоритма и обрабатываемых данных:
Алгоритмы и структуры данных простыми словами. Зачем учить алгоритмы? #codonaft
Программа = Данные + Алгоритм
Разработка программы включает параллельное проектирование этих двух ее компонентов. На каждом этапе проектирования сначала уточняется структура данных, а затем алгоритм, т.е. операции над данными.
Данные — это информация, представленная в форме, воспринимаемой устройствами ЭВМ.
Структура данных — определенным образом организованная совокупность данных. Структура данных состоит из элементов (полей) и определяется правилами, устанавливающими отношения (связи) между элементами. Элемент может состоять из более мелких элементов, т.е. сам может являться структурой данных. Таким образом, возможны иерархические (многоуровневые) структуры данных.
Иногда полем называют наименьший элемент, имеющий определенный смысл. Для этого используют также термины: реквизит, атрибут, терм, признак, скалярный элемент и др.
Пример. Структура данных «адрес человека» включает скалярные элементы: «фамилия», «имя», «отчество» и «домашний адрес», который сам является структурой данных и включает поля: «город», «улица», «дом», «квартира».
Первоначально применение ЭВМ ограничивалось в основном вычислительными задачами, и структуры данных были очень простыми — числа и числовые массивы. Основную трудность в создании программ представляло проектирование алгоритма.
В дальнейшем, сначала при разработке трансляторов и операционных систем, а затем и при создании прикладных программ, особенно систем с элементами искусственного интеллекта, экспертных систем, использовались все более сложные структуры данных и центр тяжести в разработке программ перемещался к данным.
Особенно наглядно это проявилось с появлением автоматизированных систем, построенных на основе концепции базы данных. База данных — это общая структура данных различных пакетов прикладных программ, составляющая основное ядро всей информационной системы.
Проектирование структуры данных является наиболее трудной и ответственной проблемой в создании сложных программ. Выбор структуры данных и способа их представления в памяти компьютера во многом (иногда почти однозначно) определяет структуру алгоритма. Овладение соответствующими методами стало обязательной частью образования не только системных, но и прикладных программистов.
В лекциях рассматриваются методы организации и обработки данных в оперативной памяти компьютера. Аналогичные методы лежат в основе проектирования баз данных во внешней памяти.
Уровни описания данных
В конечном счете, все данные в памяти компьютера хранятся в виде последовательности битов, но такое детальное представление трудно разработать сразу. Кроме того, его трудно корректировать при изменениях программы. Поэтому при проектировании структур данных, так же как и при разработке алгоритмов, используют основной метод борьбы со сложностью больших систем — иерархию, т. е. разбиение системы на уровни.
Часто, например, используют три уровня описания структуры данных: функциональный, логический и физический.
1. На функциональном уровне определяются необходимые для решения задачи операции над структурой данных и их свойства. Получается информационная модель предметной области решаемой задачи.
2. На логическом уровне структура данных разбивается на элементы, а операции над ней выражаются через операции над ее элементами.
3. На физическом уровне определяется способ представления данных и операций в выбранном языке программирования (в конечном итоге — в памяти компьютера). Достаточно выразить данные и операции решаемой задачи через базовые структуры и понятия языка программирования. Более детальное представление в машинном языке определяется транслятором автоматически. Программист имеет дело с абстрактной машиной, «понимающей» язык высокого уровня.
На функциональном и логическом уровнях имеют дело с абстрактными структурами данных, организованными в соответствии с решаемой задачей без детального учета особенностей компьютера (или языка программирования).
Абстрактная структура данных — это структура данных, рассматриваемая с точки зрения применяемых к ней операций без описания способа ее представления в памяти. Она близка к понятию абстрактного типа данных.
Абстрактный тип данных — тип данных, определяемый функционально: только через операции над объектами этого типа без описания способа представления их значений.
На физическом уровне имеют дело со структурами хранения, т. е. структурами данных, легко реализуемыми в языке программирования (или ЭВМ). В качестве базовых структур хранения в учебнике рассматриваются вектор, список и сеть.
Множество абстрактных структур данных бесконечно, т. к. для каждой задачи могут изобретаться свои структуры. В лекциях описаны наиболее распространенные в самых разных задачах абстрактные структуры данных: очередь, стек, дек, строка, граф, дерево, таблица, массив и множество. Они изучаются по единому плану: определение, применение, типовые операции, способы представления данных и реализации операций.
Абстрактную структуру данных можно реализовать разными способами на базе других более простых структур данных. Основными критериями выбора метода реализации являются:
- возможность реализации требуемых операций над данными;
- время выполнения операций;
- требуемая память;
- простота программирования.
Источник: studfile.net
Алгоритмы и программы
1. Понятие алгоритма.
2. Основные алгоритмические конструкции.
a)
b)
c)
d)
последовательность;
присвоение;
условный оператор (ветвление);
оператор цикла;
3. Операторы ввода-вывода.
4. Программы и программные единицы.
5. Сборка программ.
3. 1. Понятие алгоритма
Алгоритм – это конечная последовательность инструкций
(действий, предписаний), предназначенных для решения
поставленной задачи.
Каждый алгоритм задает функцию, относящую каждому
элементу области применимости соответствующий результат, т.е.
область применимости совпадает с областью определения этой
функции. Говорят тогда, что алгоритм вычисляет эту функцию.
Функция, которая вычисляется некоторым алгоритмом,
называется вычислимой.
Средства записи алгоритмов. Записать алгоритм можно на
естественном языке, в виде схемы, на каком-либо (специальном)
языке программирования, к числу которых относятся и языки
машинных команд, ассемблеры, автокоды.
4.
2. ОСНОВНЫЕ АЛГОРИТМИЧЕСКИЕ
КОНСТРУКЦИИ
А) ПОСЛЕДОВАТЕЛЬНОСТЬ
Последовательность операторов означает последовательное их
исполнение друг за другом. На блок-схемах эта конструкция
изображается стрелкой
Б) ПРИСВАИВАНИЕ
Обычный синтаксис оператора присваивания:
,
где может иметь вид «:=» или «=» (как,
например, в VBA).
5.
ПРИСВОЕНИЕ
Например, последовательность операторов
присваивания (в языке VBA):
а=4+7
а=а+2
в=2
а = в*3 + а
6.
ПОСЛЕДОВАТЕЛЬНОСТЬ
И ПРИСВОЕНИЕ
Например, а = в*3+а выглядит так:
Вся последовательность предыдущего примера изображается так:
Вся последовательность предыдущего примера изображается так:
7.
2. ОСНОВНЫЕ АЛГОРИТМИЧЕСКИЕ
КОНСТРУКЦИИ
В) УСЛОВНЫЙ ОПЕРАТОР (ВЕТВЛЕНИЕ)
Эта алгоритмическая структура представляет разветвление
алгоритма в зависимости от значения (истинности или ложности)
некоторого условия.
В общем виде конструкция выглядит так:
В VBA синтаксис условного оператора:
If Then Else End If
Условный оператор может быть неполным, без ветки
.
8.
2. ОСНОВНЫЕ АЛГОРИТМИЧЕСКИЕ
КОНСТРУКЦИИ
В) УСЛОВНЫЙ ОПЕРАТОР (ВЕТВЛЕНИЕ)
9.
2. ОСНОВНЫЕ АЛГОРИТМИЧЕСКИЕ
КОНСТРУКЦИИ
В) УСЛОВНЫЙ ОПЕРАТОР (ВЕТВЛЕНИЕ)
10.
2. ОСНОВНЫЕ АЛГОРИТМИЧЕСКИЕ
КОНСТРУКЦИИ
УСЛОВНЫЙ ОПЕРАТОР (ВЕТВЛЕНИЕ)
Пример использования неполного условного оператора:
суммируются числа, вводимые с клавиатуры; если число
отрицательное, оно прежде заменяется единицей.
Пусть переменная а хранит значение введенного числа, а
переменная S хранит сумму введенных чисел. Фрагмент блок-схемы
решения такой задачи:
11.
2. ОСНОВНЫЕ АЛГОРИТМИЧЕСКИЕ
КОНСТРУКЦИИ
В) УСЛОВНЫЙ ОПЕРАТОР (ВЕТВЛЕНИЕ)
12.
2. ОСНОВНЫЕ АЛГОРИТМИЧЕСКИЕ
КОНСТРУКЦИИ
В) УСЛОВНЫЙ ОПЕРАТОР (ВЕТВЛЕНИЕ)
Какие операции можно включать в условие?
Условие – это логическая формула, значение которой может
быть вычислено.
Простейшее условие – это отношение: больше (>), меньше
(<), больше или равно (>=), меньше или равно ( <=), не равно
(<>).
Более сложные условия составляются из простых с помощью
операций конъюнкции (в VBA это And), дизъюнкции (Or),
отрицания (Not), импликации (Imp).
Например, условие х меньше пяти, но больше или равно двум,
записывается как (x<5) And (x>=2).
13.
2. ОСНОВНЫЕ АЛГОРИТМИЧЕСКИЕ
КОНСТРУКЦИИ
Г) ОПЕРАТОР ЦИКЛА
Цикл означает повторяющийся набор действий.
Для обозначения повторений в записи алгоритмов используют
конструкции, называемые циклами: цикл с параметром
(счетчиком), цикл с предусловием и цикл с постусловием. Цикл с
предусловием является наиболее общей конструкцией: этого
оператора достаточно, чтобы записать любые циклические
действия алгоритмов.
Повторяющаяся группа действий называется телом цикла,
однократное выполнение этой группы – шагом цикла. Часть
конструкции, в которой определяется, продолжать выполнение
цикла или нет, называют заголовком цикла.
14.
15.
Г) ОПЕРАТОР ЦИКЛА
ЦИКЛ С ПРЕДУСЛОВИЕМ
Циклы с предусловием называют обычно циклами типа While
или циклами ПОКА (работает, пока условие выполняется).
Синтаксис этих циклов в VBA:
While Wend
или
Do While Loop
Например, исполнение фрагмента программы:
16.
Г) ОПЕРАТОР ЦИКЛА
ЦИКЛ С ПОСТУСЛОВИЕМ
В таких циклах условие проверяется после того, как
операторы тела цикла хотя бы раз отработают. Блок схема этого
цикла такова:
17.
Г) ОПЕРАТОР ЦИКЛА
ЦИКЛ С ПОСТУСЛОВИЕМ
Циклы с постусловием называют Until-циклами, циклами
ПОКА НЕ или циклами ДО (работают до того, как условие
выполнится).
Синтаксис этих циклов в VBA:
Do Loop Until
Программа предыдущего примера, но с Until-циклом:
18.
Г) ОПЕРАТОР ЦИКЛА
ЦИКЛ С ПАРАМЕТРОМ
Эти циклы используются тогда, когда число повторений
известно заранее – количество шагов задано, например, 20, 100,
N, или может быть вычислено как результат какого-либо
выражения до исполнения цикла.
Параметром в цикле является счетчик шагов.
Счетчик (это значение специально выделенной переменной)
может изменяться на единицу с каждым шагом или получать
некоторое заданное приращение, например, 0,15. Цикл тогда
исполняется до тех пор, пока значение счетчика не достигнет
указанного в заголовке цикла значения. Циклы с параметром
называют часто циклами типа For.
19.
20.
Г) ОПЕРАТОР ЦИКЛА
ЦИКЛ С ПАРАМЕТРОМ
Обозначим начальное значение счетчика i как i0, конечное
значение – N, приращение – h. Тогда блок-схема этого оператора
имеет вид:
21.
Г) ОПЕРАТОР ЦИКЛА
ЦИКЛ С ПАРАМЕТРОМ
Пример использования цикла For в программе VBA:
Обратите внимание, что заголовок цикла For: начальное,
конечное значения счетчика и шаг — вычисляется один раз, до
первого выполнения тела цикла, и не перевычисляется,
несмотря на возможные изменения переменных, входящих в
выражения для этих значений.
22.
Г) ОПЕРАТОР ЦИКЛА
ДОСРОЧНЫЙ ВЫХОД ИЗ ЦИКЛА
При использовании циклических конструкций может
возникнуть необходимость досрочного выхода из цикла.
Например, получен искомый результат, а условие цикла еще
истинно и позволяет продолжить исполнение этого оператора. В
языке VBA оператором досрочного выхода является Exit, причем
в циклах For он имеет вид Exit For, а в циклах, начинающихся с
Do, он имеет вид Exit Do.
Например, программа:
a=7
Do
a=a–1
If a = 5 Then
Exit Do
End If
Loop Until a < 0
23.
Г) ОПЕРАТОР ЦИКЛА
ДОСРОЧНЫЙ ВЫХОД ИЗ ЦИКЛА
Того же результата можно достичь и в программе с циклом
For:
24.
Г) ОПЕРАТОР ЦИКЛА
ВЛОЖЕННЫЕ ЦИКЛЫ
Тело любого оператора цикла может содержать другие циклы. Такие
конструкции называют вложенными циклами. Вложенные циклы (цикл в
цикле) применяют обычно в задачах, когда требуется связать или сравнить
каждый элемент одного множества с каждым элементом другого множества.
Блок схема вложенных циклов для, например, циклов с предусловием
выглядит так:
25.
Г) ОПЕРАТОР ЦИКЛА
ВЛОЖЕННЫЕ ЦИКЛЫ
Пример программы с вложенными циклами в VBA:
26.
2. ОСНОВНЫЕ АЛГОРИТМИЧЕСКИЕ
КОНСТРУКЦИИ
Д) ОПЕРАТОРЫ ВВОДА-ВЫВОДА
Эти действия выполняют ввод и вывод информации (значений
переменных) в ходе работы программ.
Для более точного представления алгоритмов в блок-схемах
эти операторы имеют специальное изображение, например,
Кроме того, для обозначения начала и конца алгоритма
используют фигуры:
27.
2. ОСНОВНЫЕ АЛГОРИТМИЧЕСКИЕ
КОНСТРУКЦИИ
Д) ОПЕРАТОРЫ ВВОДА-ВЫВОДА
В языке VBA ввод значения переменной x можно
осуществить с помощью функции InputBox, например:
x = InputBox(“Введи значение x”)
Вывод в специальное окно экрана можно реализовать
оператором MsgBox, например:
MsgBox (x)
в итоге на экран выведется только значение переменной x,
например, 5.
Оператор MsgBox “x =”https://ppt-online.org/377512″ target=»_blank»]ppt-online.org[/mask_link]