Transcript
Page 1: Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки данных"

Хакасский государственный университет им. Н.Ф. Катанова

Структуры и алгоритмы обработки данных

Лекция: Сортировка. Часть №1.

Николай Гребенщиков, www.grebenshikov.ru

Page 2: Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки данных"

Сортировка - процесс перестановки объектов заданной со-вокупности в определенном порядке (возрастающем или убы-вающем).

Целью сортировки обычно является облегчение последу-ющего поиска элементов в отсортированном множестве.

В зависимости от объема и структуры данных методы сор-тировки подразделяются на:

• Внутренние - сортировка массивов

• Внешние - сортировка файлов

1

Page 3: Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки данных"

Формальное определение задачи сортировки

Дано: N объектов a1, a2, . . . , aN

Необходимо: упорядочить заданные объекты, т.е. переста-вить их в такой последовательности ap1, . . . , apN , чтобы ихключи расположились в неубывающем порядке kp1 ≤ kp2 ≤. . . ≤ kpN .

2

Page 4: Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки данных"

Устойчивость сортировки

При устойчивой сортироке относительный порядок элемен-тов с одинаковыми ключами не меняется.

Если kpi = kpj и i < j, то pi < pj.

3

Page 5: Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки данных"

Внутренние сортировки

• вставка (включение);

• выбор;

• обмен;

• подсчет;

• разделение;

• слияние.

4

Page 6: Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки данных"

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

40 | 51 8 38 90 14 2 6340 51 | 8 38 90 14 2 638 40 51 | 38 90 14 2 638 38 40 51 | 90 14 2 638 38 40 51 90 | 14 2 638 14 38 40 51 90 | 2 632 8 14 38 40 51 90 | 632 8 14 38 40 51 63 90 |

5

Page 7: Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки данных"

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

6

Page 8: Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки данных"

Анализ сортировки простыми вставками

Наихудший случай: упорядоченный в обратном порядке мас-сив

Количество сравнений:

C(N) = 1 + 2 + 3 + . . . + N − 1 = N ·(N−1)2 = O(N2)

Количество пересылок:

M(N) = N cdot(N−1)2 + 2 · (N − 1) = O(N2)

Общее время: T (N) = C(N) + M(N) = O(N2)

7

Page 9: Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки данных"

Сортировка бинарными вставками

Для поиска места используем бинарный поиск.

Количество сравнений: C(N) = O(N · log(N))

Количество пересылок: M(N) = O(N2)

Общее время: T (N) = C(N) + M(N) = O(N2)

8

Page 10: Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки данных"

Сортировка вставками с убывающим шагом. Метод Шел-ла.

На семинар.

9

Page 11: Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки данных"

Сортировка простым выбором

| 40 51 8 38 90 14 2 632 | 40 51 8 38 90 14 632 8 | 40 51 38 90 14 632 8 14 | 40 51 38 90 632 8 14 38 | 40 51 90 632 8 14 38 40 | 51 90 632 8 14 38 40 51 | 90 632 8 14 38 40 51 63 | 902 8 14 38 40 51 63 90 |

10

Page 12: Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки данных"

Сортировка простым выбором

11

Page 13: Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки данных"

Анализ сортировки простым выбором

Наихудший случай: упорядоченный в обратном порядке мас-сив

Количество сравнений:

C(N) = (N − 1) + (N − 2) + . . . + 1 = N ·(N−1)2 = O(N2)

Количество пересылок:

M(N) = N − 1 = O(N)

Общее время: T (N) = C(N) + M(N) = O(N2)

12

Page 14: Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки данных"

Пирамидальная сортировка - сортировка выбором

Идея: поддерживать область массива в которой ищем в видесбалансированного дерева поиска (пирамиды, кучи, heap).

В 〈h1, . . . , hn〉 элемент hi образует пирамиду если:

• (2i ≤ n⇒ hi ≥ h2i) ∧ h2i образует пирамиду;

• (2i + 1 ≤ n⇒ hi ≥ h2i+1) ∧ h2i+1 образует пирамиду;

Элементы hn2+1, . . . , hn всегда образуют тривиальные пира-

миды.13

Page 15: Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки данных"

Полная пирамида для 15-ти элементов

14

Page 16: Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки данных"

Полная пирамида для 12-ти элементов

15

Page 17: Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки данных"

Алгоритм пирамидальной сортировки

1. Входную последовательность превращаем в пирамиду.

2. Входная и готовая последовательность хранятся в одноммассиве. Берем голову пирамиды и помещаем в готовуюпоследовательность. Затем восстанавливаем пирамиду.И повторяем до тех пор пока вся посследовательностьне будет обработана.

16

Page 18: Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки данных"

Просеивание

17

Page 19: Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки данных"

Просеивание

18

Page 20: Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки данных"

Построение пирамиды

19

Page 21: Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки данных"

Сортировка пирамиды

20

Page 22: Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки данных"

Сортировка пирамиды (1 из 2)

21

Page 23: Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки данных"

Сортировка пирамиды (2 из 2)

22

Page 24: Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки данных"

Анализ пирамидальной сортировки

Время просеивания: O(log(N), т.к. высота пирамиды из N

элементов равна O(log(N))

При просеивании C(N) = 2 ·M(N)

Время подготовки пирамиды: O(N · log(n))

Время сортировки: O(N · log(n))

Общее время: T (N) = O(N · log(n))

23

Page 25: Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки данных"

Сортировка простым обменом. Метод пузырька.

24

Page 26: Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки данных"

Анализ сортировки простым обменом

Наихудший случай: упорядоченный в обратном порядке мас-сив

Количество сравнений:

C(N) = (N − 1) + (N − 2) + . . . + 1 = N ·(N−1)2 = O(N2)

Количество пересылок:

M(N) = C(N) = O(N2)

Общее время: T (N) = C(N) + M(N) = O(N2)

25

Page 27: Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки данных"

Улучшенная сортировка обменом. Шейкер-сортировка.

На семинар.

26

Page 28: Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки данных"

Список литературы

• Цикова В.А., Чурина Т.Г. Методы программирования: пе-рестановки, поиск и сортировка: Учеб. пособие / Ново-сиб. гос. ун-т. Новосибирск, 2006. Ч.2. 58 с. сс.26-41.

• Ахо А., Хопкрофт Д., Ульман Д. Структуры данных иалгоритмы. - М. : Издательский дом “Вильямс”, 2000.сс.228-234, 244-246.

• Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К. Алгорит-мы: построение и анализ, 2-е издание. - М. : Издатель-ский дом “Вильямс”, 2007. сс.173-197.

27

Page 29: Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки данных"

• Кнут Д, Искусство программирования, том 3. Сортировкаи поиск, 2-е изд. - М. : Издательский дома “Вильямс”,2000. сс.92-180.


Recommended