Справочник от Автор24
Поделись лекцией за скидку на Автор24

Тип данных.Структура данных.Абстрактный тип данных (АТД).

  • 👀 381 просмотр
  • 📌 312 загрузок
Выбери формат для чтения
Загружаем конспект в формате pdf
Это займет всего пару минут! А пока ты можешь прочитать работу в формате Word 👇
Конспект лекции по дисциплине «Тип данных.Структура данных.Абстрактный тип данных (АТД).» pdf
Информатика Алгоритмы и структуры данных Программирование Основные термины Тип данных. Структура данных. Абстрактный тип данных (АТД). Основные термины Тип данных. Структура данных. Абстрактный тип данных (АТД). … Тип данных определяет множество значений и операции над ними… + способ размещения данных в памяти. Структура данных определяет способ хранения/размещения элементов данных в памяти и связи между ними. АТД – определяет совокупность операций, способ реализации не учитывается (описывает что нужно сделать, но не декларирует как). Примеры АТД Вектор… Список… Дерево… ? Список разделов курса АиСД 1. 2. 3. 4. 5. 6. 7. Вводная часть. Базовые понятия. Анализ алгоритмов. Линейные структуры данных. Деревья, графы, многосвязные списки. Сортировка. Поиск (сбалансированные деревья, хеш-таблицы). Алгоритмы на графах. Строковые алгоритмы. Литература Романов Е. Л. - Практикум по программированию на C++. Ахо А.В., Хопкрофт Д.Э., Ульман Д.Д. Структуры данных и алгоритмы. Вирт Н. Алгоритмы+структуры данных = программы. Кнут, Д. Э. Искусство программирования. Седжвик Р. Фундаментальные алгоритмы на С++. Анализ. Структуры данных. Сортировка. Поиск. Каррано Ф.М., Причард Дж. Абстракция данных и решение задач на C++. Стены и зеркала. АНАЛИЗ АЛГОРИТМОВ Критерии оценки эффективности: Временная сложность измеряется количеством операций совершаемых для решения поставленной задачи. Пространственная сложность – это объем затраченной алгоритмом памяти. Различают оценки в лучшем, худшем и среднем случае. Для оценки в среднем требуется модель входного потока. При значительном увеличении объема входных данных вклад постоянных множителей и слагаемых низших порядков становится ничтожным. Поэтому обычно используют асимптотические оценки: O-большое – верхняя асимптотическая оценка;  (омега большое) – нижняя;  (тетта)– верхняя и нижняя (асимптотически точная). Пример f (n) ( g (n)) C2  g (n) f (n)  O( g (n)) f ( n) C  g (n) f (n) ( g (n)) f ( n) f ( n) C1  g (n) n C  g (n) n n Определения Пусть f(n) и g(n) – положительные функции положительного аргумента. f (n) ( g (n)) : C  0, n0  0 : (n  n0 ) f (n)  C  g (n) f (n) ( g (n)) : C  0, n0  0 : (n  n0 ) C  g (n)  f (n) f (n) ( g (n)) : C1  0, C2  0, n0  0 : (n  n0 ) C1  g (n)  f (n)  C2  g (n) Запись O(g(n)) обозначает класс функций, таких, что все они растут не быстрее, чем функция g(n) с точностью до постоянного множителя. Основные правила асимптотического анализа 1. Постоянный множитель отбрасывается:(C  f (n))  ( f (n)), где C – константа. 2. Оценка сложности произведения или частного: ( g (n)  f (n))  ( f (n)) ( g (n)), ( g (n) / f (n))  ( f (n)) / ( g (n)). 3. Оценка сложности суммы: ( g (n)  f (n))  max[( f (n)), ( g (n))]. Наиболее распространенные классы сложности: O(1) – константная сложность; O(n) – линейная сложность; O(log(n)) – логарифмическая сложность; O(n2) – квадратичная сложность; O(nc) –полиномиальная сложность, где c – константа (c> 1); O(cf(n)) – экспоненциальная сложность, где c – константа (c> 1), f(n) –полиномиальная функция; O(n!) – факториальная сложность. В логарифмических оценках основание логарифма не указывают, это связанно со следующим свойством: log b ( x) log a ( x)  log b (a) Способы записи алгоритмов 1. 2. 3. 4. Описание на естественном языке. Графически: блок-схемы, UML-диаграммы и т.п. Псевдокод. Язык программирования. i  1, n i  1, n j  1, n j  i, n … … а Рисунок 2.3. Вложенные циклы. б Начало function(n) нет n 1 … … да Конец Рисунок 2.4. Пример рекурсии. n function     2 … … Начало Начало func1(n) нет n 1 func1 n  1 func2(n) нет func2  n  1 n 1 да да Конец Конец а б Рисунок 2.5. Примеры рекурсии. func2  n  1 Схемы структур данных Для наглядной иллюстрации на схемах и используются стрелки. Стрелки проводятся из ячеек указателей, курсоров или ссылок к данным на которые они указывают (ссылаются) Линейные структуры данных и АТД с линейным порядком элементов Массивы - последовательности однотипных элементов расположенных непосредственно друг за другом. 1 n 1 ... 2 int a[3]; int *a= new int[3]; a int a[3][3]; a[0][0] a[0][1] a[0] a[1] a[0][2] a[1][0] Двумерный массив – массив массивов. a[2] a[2][2] Списки (связные списки) - последовательности элементов размещенных в памяти произвольным образом и связанных указателями, которые определяют логический порядок. Односвязный список. head tail Двусвязный список. head Циклический список. Стек - линейная последовательность элементов, добавление и удаление в которую осуществляется с одного конца, называемого вершиной. Операторы: PUSH(x, S) – помещает значение x в стек S; POP(S) – извлекает элемент из стека S; TOP(S) – возвращает значение элемента в вершине стека S; CLEAR(S) – удаляет все элементы из стека S; ISEMPTY(S) – возвращает значение «истина» если стек S пустой, «ложь» в противном случае. POP(S ) x PUSH( x, S ) x Стек может быть эффективно реализован с помощью массива: Зафиксировав «дно» стека как начало массива, можно использовать курсор или указатель top, определяющий положение вершины. 1 ... top Последний элемент Первый элемент n Реализация стека с помощью массива. Очередь - линейная последовательность элементов, добавление с одного конца – заднего (rear), а удаление с другого – переднего (front). ENQUEUE(x, Q) – помещает значение x в очередь Q; DEQUEUE(Q) – извлекает элемент из очереди Q; FRONT(Q) – возвращает значение первого элемента очереди Q; ENQUEUE( x, Q) DEQUEUE(Q) x Работа с очередью. Реализация с помощью массива: процедуру увеличения индекса на единицу определим так: i  i mod n  1 rear front 1 ... Первый элемент front rear n Последний элемент 1 ... Последний элемент n Первый элемент а) б) Реализация очереди с помощью «циклического массива». Дек - двусторонняя очередь, позволяет добавлять и удалять элементы с обоих концов. PushBack( x, D) PopBack( D) PushFront( x, D) PopFront( D) Двусторонняя очередь.
«Тип данных.Структура данных.Абстрактный тип данных (АТД).» 👇
Готовые курсовые работы и рефераты
Купить от 250 ₽
Решение задач от ИИ за 2 минуты
Решить задачу
Помощь с рефератом от нейросети
Написать ИИ

Тебе могут подойти лекции

Смотреть все 588 лекций
Все самое важное и интересное в Telegram

Все сервисы Справочника в твоем телефоне! Просто напиши Боту, что ты ищешь и он быстро найдет нужную статью, лекцию или пособие для тебя!

Перейти в Telegram Bot