Введение
Методологии программирования • Хаотическое программирование • Структурное программирование • Объектно-ориентированное программирование 2
Алгоритм • Программа = алгоритм + данные (Вирт) • Алгоритм Пример: задача сортировки Вход: { a 1, a 2, …, an } Выход: {a 1’, a 2’, …, an’ }, a 1’ a 2’ … an’ 3
Алгоритм • Эффективность алгоритма 1. v 1 = 109 оп/сек; сортировка вставками; k 1 = c 1 n 2; t 1 = k 1/ v 1; c 1 = 2 2. v 2 = 107 оп/сек; сортировка слиянием; k 2 = c 2 nlog 2(n); t 2 = k 2/ v 2; c 2 = 50 n 106 107 t 1 2000 сек ≈ 2, 3 дня t 2 ≈ 100 сек < 20 мин 4
Алгоритм Схема алгоритма Псевдокод s = 0, i = 0 while не все элементы { добавить к s очередной элемент: s = s + ai i=i+1 } 5
1. Общая характеристика структур данных
1. 1. Уровни представления информации • Интуитивные структуры • Абстрактные (логические) структуры • Конкретные структуры 7
1. 2. Структура данных • Логическая структура данных = множество элементов + связи между элементами • Динамическое множество 8
1. 3. Операции Запросы Модифицирующие операции Insert (S, x) Delete (S, x) Search (S, k) Minimum (S) Maximum (S) Successor (S, x) Predecessor (S, x) S – динамическое множество k – значение ключа x – указатель на элемент множества 9
1. 4. Конкретные структуры Отображение в памяти ЭВМ • Вектор • Список • Сеть 10
1. 5. Вектор Доступ к элементу – по индексу Адресi = базовый_адрес + i* размер_элемента 11
1. 6. Типы списков • Структура элемента списка – Односвязные – Двухсвязные • Организация списка – Линейный – Циклический (кольцевой) • Задание списка – Указатель на первый элемент – Головной элемент (ограничитель) 12
1. 7. Элемент списка • Односвязный список • Двухсвязный список 13
1. 8. Организация списка • Линейный • Циклический 14
1. 9. Задание списка • Указатель на начало списка • Головной элемент 15
1. 10. Примеры 16