- •НИУ ВШЭ – Пермь
- •Нечисленные алгоритмы: сортировка и поиск
- •Задача сортировки
- •Формализация задачи сортировки
- •Формализация задачи сортировки
- •Внутренняя сортировка
- •Внутренняя сортировка
- •Внутренняя сортировка
- •Внутренняя сортировка
- •Внутренняя сортировка
- •Внутренняя сортировка
- •Внутренняя сортировка
- •Внутренняя сортировка
- •Внутренняя сортировка
- •Внутренняя сортировка методом вставок (включений)
- •Внутренняя сортировка методом вставок (включений)
- •Внутренняя сортировка методом вставок (включений)
- •Внутренняя сортировка методом вставок (включений)
- •Внутренняя сортировка
- •Внутренняя сортировка: быстрая сортировка
- •Внутренняя сортировка: быстрая сортировка
- •Внутренняя сортировка: быстрая сортировка
- •Внутренняя сортировка: быстрая сортировка
- •Внутренняя сортировка: быстрая сортировка
- •Внутренняя сортировка: быстрая сортировка
- •Внутренняя сортировка: быстрая сортировка
- •Внутренняя сортировка: быстрая сортировка
- •Внутренняя сортировка: быстрая сортировка
- •Внутренняя сортировка: быстрая сортировка
- •Внутренняя сортировка: быстрая сортировка
- •Внутренняя сортировка: быстрая сортировка
- •Внутренняя сортировка
- •Внутренняя сортировка методом вставок (включений)
- •Внутренняя сортировка методом вставок (включений)
- •Внутренняя сортировка методом вставок (включений)
- •Внутренняя сортировка
- •Внутренняя сортировка
НИУ ВШЭ – Пермь
Факультет бизнес-информатики
Кафедра информационных технологий в бизнесе
Сортировка и поиск.
Сортировка массивов
Материалы курса «Теоретические основы информатики»
Лекция 13
Лядова Л.Н.
Пермь 2013
Нечисленные алгоритмы: сортировка и поиск
Нечисленные алгоритмы работают с информацией различного характера: с базами данных и знаний, с текстами, написанными на различных языках, с графической, звуковой, мультимедиа информацией.
Наиболее часто используемыми нечисленными алгоритмами являются
алгоритмы упорядочения информации (сортировки) и алгоритмы поиска информации.
Упорядочение данных является необходимой стадией их осмысления в
научных исследованиях и инженерной деятельности. Важность поиска информации во всех областях деятельности не требует обоснования.
Сортировка может использоваться как подготовительный этап для поиска информации – проще искать нужные данные в большом объеме информации, если они предварительно упорядочены.
2
Задача сортировки
Общее определение:
Сортировка (sorting) – процесс разделения объектов по виду и сорту.
В программировании:
Сортировка – это перестановка элементов , при которой они располагаются в порядке возрастания или убывания, т.е. упорядочение (ordering).
Использовался также термин ранжирование (sequencing). Применение сортировки:
–Решение задачи группирования, т.е. объединения всех элементов множества с одинаковыми или принадлежащими какому-либо диапазону значениями некоторого признака.
–Поиск общих элементов в двух и более множествах.
3 |
– Поиск информации – поиск элементов множества, удовлетворяющих |
|
определенным критериям. |
||
|
Формализация задачи сортировки
Дано множество элементов R = {R1, R2, …, RN}.
Пусть каждый элемент – запись, включающая поля различных типов (в простейшем случае запись может представлять собой скалярное значение, число).
Каждая запись Rj имеет ключ Keyj, будем использовать обозначения Keyj = Key(Rj) = Rj.Key,
который и управляет процессом сортировки. Ключ может быть значением отдельного поля (Rj.Key), может быть «составным» (состоять из нескольких полей) и может вычисляться как функция (Key(Rj)). Например: элемент – это запись данных о студенте группы (ФИО, ДатаРождения, Рейтинг); здесь записи можно упорядочить по значению рейтинга, по полю ФИО, если есть совпадения, то по комбинации полей ФИО+ДатаРождения. Если запись включает оценки ЕГЭ, то можно упорядочить данные по среднему баллу
4ЕГЭ – это уже вычисляемый как функция ключ.
Формализация задачи сортировки
Отношение порядка “<” на множестве ключей вводится таким образом, чтобы для любых трех значений a, b и c выполнялись следующие условия:
1.Справедливо одно и только одно из трех соотношений
a < b, a = b, b < a a < c, a = c, c < a c < b, c = b, b < c
(закон трихотомии).
2.Если a < b и b < c, то a < c (закон транзитивности).
Эти два свойства определяют математическое понятие линейного упорядочения (или совершенного упорядочения). Любое множество, на
котором определено это отношение, поддается сортировке.
Задача сортировки – найти такую перестановку записей {R1, R2, …, RN} p(1), p(2), …, p(N),
после которой ключи записей (p(N) R) будут составлять
5последовательность, для которой Key(p(1)) < Key(p(2)) < … < Key(p(N)).
Внутренняя сортировка
Внутренняя сортировка – это сортировка данных в оперативной памяти компьютера (сортировка массивов, сортировка ключей, сортировка таблицы адресов, сортировка списков).
Основные подходы к сортировке:
–Сортировка методом вставок (включений).
–Обменная сортировка.
–Сортировка посредством выбора.
–Сортировка путем подсчета.
–Специальная сортировка.
–Усовершенствованные методы.
6
Внутренняя сортировка
Внутренняя сортировка
– это сортировка данных в оперативной памяти компьютера:
–сортировка
массивов,
–сортировка таблицы адресов,
–сортировка ключей,
–сортировка списков.
7
Записи в массиве физически меняются местами (переупорядочиваются) так, чтобы их ключи были упорядочены:
1
2
3
4
5
6
7
8
9
10 
23 11 2 25 4 7 9 30 21 33
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
2 4 7 9 11 21 23 25 30 33
Внутренняя сортировка
Внутренняя сортировка
– это сортировка данных в оперативной памяти компьютера:
–сортировка массивов,
–сортировка таблицы адресов,
–сортировка ключей,
–сортировка списков.
8
Если записи и/или ключи занимают много места, то составляется вспомогательная таблица адресных ссылок, которые указывают на записи в неупорядоченном массиве (для массива такими ссылками могут быть индексы элементов).
При сортировке меняются местами не сами записи в массиве, а адресные ссылки на них во вспомогательной таблице, что дает выигрыш во времени при перемещении записей при сортировке.
Внутренняя сортировка
Массив адресов записей в порядке их сортировки по второму ключу
Внутренняя сортировка |
|
Адрес |
|
|
|||
– это сортировка данных в |
|
(индекс в |
|
оперативной памяти |
|
массиве) |
|
|
10 |
||
компьютера: |
|
||
– |
сортировка массивов, |
|
3 |
– |
сортировка таблицы |
|
8 |
|
адресов, |
|
5 |
– |
сортировка ключей, |
|
|
|
7 |
||
– |
сортировка списков. |
|
|
|
6 |
||
|
|
|
|
|
|
|
1 |
|
|
|
9 |
9 |
|
|
2 |
|
|
4 |
|
|
|
|
|
|
|
|
|
Массив данных, |
|
|
отсортированный по |
Второй ключ для |
|
ФИО |
||
сортировки |
||
|
№ |
ФИО |
Дата |
Рейтинг |
Рождения |
|||
1 |
Аушев А.А. |
12.12.1990 |
200 |
2 |
Быков Б.Б. |
01.01.1991 |
180 |
3 |
Зыкин З.З. |
10.10.1989 |
215 |
4 |
Жуков Е.Е. |
02.02.1990 |
176 |
5 |
Крюков К.К. |
03.03.1990 |
211 |
6 |
Лыков Л.Л. |
04.04.1991 |
205 |
7 |
Миков И.И. |
05.05.1990 |
210 |
8 |
Сухов С.А. |
01.07.1989 |
215 |
9 |
Шихов Б.И. |
09.01.1990 |
195 |
10 |
Яшин Я.Я. |
08.09.1991 |
220 |
Внутренняя сортировка
Внутренняя сортировка –
это сортировка данных в оперативной памяти компьютера:
–сортировка массивов,
–сортировка таблицы адресов,
–сортировка ключей,
–сортировка списков.
Если записи имеют большой размер, а ключи короткие или вычисляются как функция от нескольких полей, то в отдельную таблицу можно вынести ключи в таблицу адресных ссылок – дополнить ее ключевой информацией. Тогда сортировка выполняется без обращения к записям основной таблицы.
Такой способ называется сортировкой ключей.
10
