
- •( Для студентов, обучающихся по направлению подготовки 6.050101 ”Компьютерные науки”)
- •( Для студентов, обучающихся по направлению подготовки 6.050101 ”Компьютерные науки”)
- •Введение
- •Классификация структур данных
- •Структура оперативной памяти
- •Лабораторная работа 1 методы сортировки постоянных таблиц и поиска в таблицах
- •Методические указания к выполнению работы
- •Определение операции сортировки
- •Линейный выбор (сортировка выбором)
- •Линейный выбор с подсчетом
- •Метод "пузырька"
- •{Описание типов}
- •Шейкер – сортировка
- •Метод вставки с прямым включением
- •Метод вставки с бинарным включением
- •Метод двухпутевой вставки
- •Метод Шелла
- •"Быстрая" сортировка (обменная сортировка с разделением)
- •Метод простого двухпутевого слияния (сортировка слиянием)
- •Метод естественного слияния (сортировка слиянием)
- •Дихотомический поиск по совпадению
- •Дихотомический поиск нескольких записей
- •Дихотомический поиск по близости
- •Дихотомический поиск по интервалу
- •Задание к лабораторной работе
- •Варианты заданий
- •Требования к выполнению лабораторной работы
- •Контрольные вопросы
- •Литература
- •Приложение а Примеры программ, выполняющих сортировку таблицы методом линейного выбора
- •Программа на языке с
- •Приложение в краткое описание системы turbo pascal
- •1. Структура pascal-программы
- •2. Простые типы
- •3. Составные типы
- •4. Операторы
- •5. Процедуры и функции
- •6. Файлы
- •7. Управление консолью
- •Содержание
- •Методические указания и задания
- •К лабораторным работам по курсу
- •«Алгоритмы и структуры данных»
- •(Для студентов обучающихся по направлению подготовки 6.050101 ”Компьютерные науки”)
Классификация структур данных
Совокупности данных, организованные определенным образом, называют структурами данных. Если при выполнении программы все данные помещаются в оперативной памяти, то для их представления нужно выбрать внутренние структуры. Если же требуется организовать обработку данных большого объема, то эти данные нужно представить внешними структурами.
Внутренние структуры данных характеризуются определенной логической связью данных друг с другом. По характеру взаимосвязи можно разделить внутренние структуры на линейные и нелинейные.
У линейных структур все данные расположены на одном уровне, у нелинейных – на нескольких уровнях. Существует три типа линейных структур: прямоугольные (массивы, таблицы), связные (списки, стеки, очереди), строковые. У нелинейных структур выделяют такие основные разновидности, как деревья и графы:
Для каждой разновидности структур данных характерны свои особенности в организации. В качестве основы для общей характеристики каждого типа структур выбрана запись. Запись – это логическое объединение разнотипных данных в единую конструкцию. Каждое данное представляется полем. Поле – минимальная единица, на которую можно ссылаться при обращении к записи.
Исходной проблемой при решении конкретной задачи является выбор наиболее подходящей структуры данных и способа ее отображения в памяти. В научно – технических задачах широко используются прямоугольные структуры; при разработке компиляторов и операционных систем используются таблицы, очереди, стеки, деревья. Обработка экономических и статистических данных с помощью компьютера обусловила применение таблиц и списковых структур. Решение информационно-поисковых задач повлекло использование таблиц, деревьев, графов.
Таким образом, при решении задачи в первую очередь нужно выполнить следующие действия:
-
определить структуры данных (входных, промежуточных, выходных);
-
решить задачу отображения выбранных структур в оперативной памяти;
-
определить процедуры обработки структур: хранение элементов структуры, упорядочение (сортировка), поиск элементов структуры по заданному признаку, ввод – вывод и другие.
Структура оперативной памяти
Различные абстрактные структуры данных отображаются в памяти компьютера на разные структуры хранения. Набор структур хранения (структур памяти) весьма ограничен. Базовой структурой оперативной памяти (ОП) является упорядоченная последовательность байт (байт – это наименьший адресуемый элемент памяти). Более сложные структуры памяти надстраиваются над базовой. Основными среди них являются векторы и списки.
Вектор – это множество элементов ОП, которые физически расположены рядом (например, последовательность подряд идущих байт). Адрес первого элемента является базовым адресом вектора. Адрес k-го элемента вектора может быть определен по формуле:
где x – базовый адрес, m – длина элемента, выраженная в целых единицах памяти (байт, полуслово, слово, двойное слово, совокупность байт).
Но отображение структур данных на вектор, то есть на последовательное распределение памяти, возможно лишь в определенных приложениях. Существует широкий класс задач, в которых такое отображение приводит к неудовлетворительным результатам. Для таких задач более эффективно применение связного распределения памяти, базирующегося на использовании указателей (ссылок) при обращении к данных.
Связная память (динамически распределяемая область памяти) поддерживается современными системами программирования Паскаль и Си.