Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Презентации лекций по ТОИ / 13-Сортировка массивов.pps
Скачиваний:
44
Добавлен:
02.06.2015
Размер:
3.07 Mб
Скачать

НИУ ВШЭ – Пермь

Факультет бизнес-информатики

Кафедра информационных технологий в бизнесе

Сортировка и поиск.

Сортировка массивов

Материалы курса «Теоретические основы информатики»

Лекция 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

Соседние файлы в папке Презентации лекций по ТОИ