Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Структурные элементы данных алгоритмы поиска и сортировки. Учебное пособие для СПО
.pdf
СРЕДНЕЕ ПРОФЕССИОНАЛЬНОЕ ОБРАЗОВАНИЕ
________________________________________________________________________________
С.В. Самуйлов, С.В. Самуйлова
СТРУКТУРНЫЕ ЭЛЕМЕНТЫ
ДАННЫХ: АЛГОРИТМЫ ПОИСКА
И СОРТИРОВКИ
УЧЕБНОЕ ПОСОБИЕ ДЛЯ СПО
Рекомендовано Учебно-методическим отделом СПО в качестве учебного пособия
для использования в учебном процессе образовательными учреждениями
среднего профессионального образования по укрупненной группе профессий
и специальностей «Информатика и вычислительная техника»
Москва
Ай Пи Ар Медиа
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. Все записи просмотрены, совпадение не обнаружено.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
