Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Структурные элементы данных алгоритмы поиска и сортировки. Учебное пособие для СПО

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
1 Мб
Скачать
☆
СРЕДНЕЕ ПРОФЕССИОНАЛЬНОЕ ОБРАЗОВАНИЕ
________________________________________________________________________________
С.В. Самуйлов, С.В. Самуйлова
СТРУКТУРНЫЕ ЭЛЕМЕНТЫ
ДАННЫХ: АЛГОРИТМЫ ПОИСКА
И СОРТИРОВКИ
Рекомендовано Учебно-методическим отделом СПО в качестве учебного пособия
для использования в учебном процессе образовательными учреждениями
среднего профессионального образования по укрупненной группе профессий
и специальностей «Информатика и вычислительная техника»
Москва Ай Пи Ар Медиа
2024
Саратов
Профобразование
2024
УДК 004.422.63 ББК 16.351.2 С17
Авторы:
Самуйлов С.В. — канд. техн. наук, доц. кафедры математического обеспечения
и применения ЭВМ Пензенского государственного университета;
Самуйлова С.В. — канд. техн. наук, доц. кафедры высшей и прикладной математики
Пензенского государственного университета
Рецензенты:
Афонин А.Ю. — канд. техн. наук, начальник Управления системного
программного обеспечения НТП «Криптософт»;
Бычков А.С. — канд. техн. наук, доц. кафедры вычислительной техники
Пензенского государственного университета
Самуйлов, Сергей Владимирович.
С17 Структурные элементы данных: алгоритмы поиска и сортировки :
учебное пособие для СПО / С.В. Самуйлов, С.В. Самуйлова. — Москва : Ай Пи Ар Медиа ; Саратов : Профобразование, 2024. — 68 с. — (Среднее профессиональное образование). — Текст : электронный.
ISBN 978-5-4497-3072-5 (Ай Пи Ар Медиа) ISBN 978-5-4488-2031-1 (Профобразование)
В учебном пособии приведено описание наиболее известных алгорит-
мов обработки данных: алгоритмов поиска и сортировки. Подробно рас­смотрены алгоритмы последовательного, бинарного поиска, поиск методом хеширования, а также алгоритмы внутренней и внешней сортировки, кото­рые являются основой компьютерного программирования и разработки сложных программ. В конце пособия даны задания по пройденным темам.
Подготовлено с учетом требований Федерального государственного
образовательного стандарта среднего профессионального образования.
Предназначено для студентов, обучающихся по укрупненной группе
профессий и специальностей «Информатика и вычислительная техника», изучающих дисциплину «Базы данных».
Учебное электронное издание
ISBN 978-5-4497-3072-5 (Ай Пи Ар Медиа) © Самуйлов С.В., Самуйлова С.В., 2024 ISBN 978-5-4488-2031-1 (Профобразование) © ООО Компания «Ай Пи Ар Медиа», 2024 © ООО «Профобразование», 2024
Учебное издание
Самуйлов Сергей Владимирович
Самуйлова Светлана Валентиновна
Редактор А.А. Балакирева
Технический редактор, компьютерная верстка Е.В. Савенкова
Корректор Т.В. Фетисова
Обложка Я.А. Кирсанов, С.С. Сизиумова, фотобанк Freepik
Подписано к использованию 21.05.2024. Объем данных 6 Мб.
ООО «Профобразование»
8-800-511-14-70 (бесплатный звонок по России)
E-mail: office@profspo.ru, sale@profobr.pro
4
СОДЕРЖАНИЕ
ВВЕДЕНИЕ ................................................................................................................. 5
1. ТЕОРЕТИЧЕСКАЯ ЧАСТЬ ............................................................................... 6
1.1. Среда разработки Visual Studio ....................................................................... 6
1.2. Последовательный поиск ................................................................................ 9
1.3. Бинарный поиск .............................................................................................. 12
1.4. Поиск методом хеширования ........................................................................ 16
1.5. Классические алгоритмы внутренней сортировки ..................................... 21
1.6. Эффективные алгоритмы внутренней сортировки ..................................... 25
1.7. Очереди с приоритетами ............................................................................... 30
1.8. Пирамидальная сортировка ........................................................................... 35
1.9. Алгоритмы внешней сортировки .................................................................. 37
2. ПРАКТИЧЕСКАЯ ЧАСТЬ ................................................................................ 43
2.1. Задание по теме «Среда разработки Visual Studio» .................................... 43
2.2. Задания по теме «Последовательный поиск».............................................. 43
2.3. Задания по теме «Бинарный поиск» ............................................................. 47
2.4. Задания по теме «Поиск методом хеширования» ....................................... 50
2.5. Задания по теме «Классические алгоритмы внутренней сортировки» .... 55
2.6. Задания по теме «Эффективные алгоритмы внутренней сортировки» .... 59
2.7. Задания по теме «Очереди с приоритетами» .............................................. 60
2.8. Задание по теме «Пирамидальная сортировка» .......................................... 64
2.9. Задания по теме «Алгоритмы внешней сортировки» ................................. 65
ЛИТЕРАТУРА ......................................................................................................... 68
5
ВВЕДЕНИЕ
Структуры данных определяют способ организации данных в памяти
компьютера [1].
Алгоритмы обеспечивают выполнение различных операций с этими
структурами.
Ни одна структура данных не является универсальной и не может подхо-
дить для всех целей, поэтому важно знать преимущества и ограничения, при­сущие большинству из них.
В учебном пособии описаны структуры данных и алгоритмы, которые яв-
ляются фундаментом современного компьютерного программирования и мето­дов разработки сложных программ. Знание этих структур и алгоритмов позво­ляет осуществлять выбор наиболее оптимальных способов решения задач, воз­никающих при создании программного обеспечения различного назначения.
Учебное пособие состоит из теоретической и практической частей. Основная задача практических заданий — сравнение между собой раз-
личных алгоритмов решения одной и той же задачи между собой с последую­щим анализом полученных результатов.
В результате освоения материала обучающиеся должны:
1) знать:
- основные виды алгоритмов;
- особенности среды программирования Visual Studio;
- особенности управления базами данных;
2) уметь:
- запрограммировать пройденные алгоритмы;
- разрабатывать интерфейс программного комплекса;
- сортировать и индексировать данные.
6
1. ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
1.1. СРЕДА РАЗРАБОТКИ VISUAL STUDIO
Среда Visual Studio визуально реализуется в виде окна с несколькими панелями инструментов [2]. После запуска появляется начальная страница (рис. 1.1), позволяющая либо запустить недавно открываемые проекты (пере­чень проектов в левой части формы), либо начать работу одним из четырех пе­речисленных справа способов. Для нас имеют значение две возможности:
– открыть проект или решение, если проект ранее был создан и необхо­димо продолжить работу над ним;
– создать проект, если требуется создать новый проект.
Рис. 1.1. Начальное окно среды разработки Visual Studio
После выбора варианта «Создание проекта» необходимо выбрать язык программирования, платформу и тип проекта (рис. 1.2).
7
Рис. 1.2. Форма «Создание проекта»
Рис. 1.3. Начальная форма проекта
8
Выбираем язык С#, платформу Windows и в оставшемся списке шаблонов «Приложение Windows Forms». После нажатия кнопки «Далее» задаем назва­ние проекта и его расположение. После нажатия кнопок «Далее» и «Создать» создается новый проект и появляется следующее окно (рис. 1.3).
В окне проекта находятся несколько основных элементов, которые будут необходимы нам в работе с проектом. Рассмотрим их более подробно:
1) форма — окно разрабатываемого приложения, контейнер, на котором
будут размещаться необходимые нам элементы управления;
2) закладка с текстом программы, с помощью которого можно писать, ре­дактировать и просматривать этот текст. Перейти от формы к тексту програм­мы можно с помощью клавиши F7;
3) закладка с формой. Перейти от текста программы к форме можно с по­мощью комбинации клавиш Shift + F7;
4) закладка «Панель элементов». Содержит все доступные нам элементы управления: метки, кнопки, панели и т. п. Открыть панель элементов можно также с помощью сочетания клавиш Ctrl + Alt + X;
5) обозреватель решений. Содержит список всех файлов, входящих в про­ект. Открыть обозреватель решений (если он закрыт) можно также с помощью сочетания клавиш Ctrl + Alt + L;
6) окно свойств. Содержит все основные свойства и события выделенного элемента управления, включая форму. Если окна нет на экране, его можно ак­тивировать с помощью клавиши F4.
Рис. 1.4. Форма для задания 2.1
9
Рассмотрим управляющие элементы и их свойства, необходимые для со-
здания формы рис. 1.4.
Form служит контейнером для всех других компонентов. На форме мож­но размещать визуальные компоненты, образующие интерфейсную часть при­ложения. В приложении были изменены следующие свойства формы: Text, BackColor, ForeColor, MaximizeBox, MinimizeBox, Size, StartPosition. Кроме того, для формирования исходных массивов и задания начальных значений по­исковых ключей в последующих практических заданиях используется событие
Load, которое происходит при каждой загрузке данной формы пользователем.
label — графический элемент управления, предназначенный для отоб­ражения текста на форме. Изменялись свойства Font, ForeColor, Location, Size, Text.
panel в данном приложении используется для отделения областей формы друг от друга. Изменялись свойства Backcolor, BorderStyle, Location, Size.
numericUpDown предназначен для ввода числовых данных. В приложе- нии используется для задания начальных значений. Изменялись свойства Font, ForeColor, Location, Maximum, Size. Кроме того, для изменения начальных
значений с помощью двойного щелчка мыши можно использовать событие
DoubleClick.
textBox предназначен для ввода, редактирования и вывода информации
в текстовом формате. В приложении используется для вывода результатов ра­боты приложения. Изменялись свойства Font, ForeColor, Location, Size.
button — компонент «Кнопка». Изменялись свойства BackColor, Font, ForeColor, Location, Size, Text. Кроме того, для запуска соответствующего дей- ствия используется событие Click.
1.2. ПОСЛЕДОВАТЕЛЬНЫЙ ПОИСК
Поиском называется процедура выделения из множества записей некото­рого его подмножества, записи которого удовлетворяют заданному условию [3]. Множество записей может храниться в массиве, связанном списке, дереве или графе.
Здесь и далее под записью понимается как отдельное поле, содержащее одно значение, так и структура любой допустимой степени сложности.
В дальнейшем будем предполагать, что имеется множество из N записей и необходимо определить положение записи, удовлетворяющей некоторому за­данному условию. Предположим, что каждая запись содержит специальное по­ле, которое называется ключом.
10
В алгоритмах поиска обычно задан аргумент поиска K, и задача состоит в нахождении записи, имеющей K своим ключом. Существуют две возможно­сти окончания поиска: либо поиск оказался удачным, т. е. была найдена запись с ключом K, либо он оказался неудачным, т. е. ключ K не был найден ни в од­ной записи.
Хотя целью поиска является информация, содержащаяся в записи, в даль­нейшем будем рассматривать алгоритмы, в которых обрабатываются только ключи.
Во многих задачах поиск требует наибольших временных затрат, поэтому замена «плохого» метода поиска на «хороший» часто ведет к существенному увеличению скорости работы.
Часто удается так организовать данные, что поиск значительно убыстря­ется или почти полностью исключается.
Эффективность различных алгоритмов поиска оценивается количе- ством сравниваемых пар ключей, необходимым для выполнения условия поис­ка. Обычно оценивается среднее и максимальное количество сравнений.
Рассмотрим несколько способов организации и поиска данных. При этом основное внимание будет уделено сравнительному анализу изучаемых алго­ритмов, их сложностным и временным характеристикам.
1.2.1. Неоптимальный последовательный поиск
Если нет никакой дополнительной информации о способе хранения дан­ных, то, вероятнее всего, данные расположены в произвольном порядке. В этом случае очевидный подход — простой последовательный просмотр массива. Сформулируем алгоритм более точно [4].
Пусть имеется массив записей с ключами А1, А2, …, АN. Необходимо найти запись с заданным ключом K.
Алгоритм А:
1. i = 1.
2. Если K = Аi — алгоритм заканчивается удачно.
3. Иначе i = i + 1.
4. Если i <= N, то вернуться к шагу 2.
5. Иначе алгоритм заканчивается неудачно.
Условия окончания поиска:
1. Элемент найден, т. е. обнаружен ключ Аi = K.
2. Все записи просмотрены, совпадение не обнаружено.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]