Лекция №1. Введение. Предмет "Структуры и алгоритмы обработки данных"
Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки данных"
1. Хакасский государственный университет им. Н.Ф. Катанова
Структуры и алгоритмы обработки данных
Лекция: Сортировка. Часть №1.
Николай Гребенщиков, www.grebenshikov.ru
2. Сортировка - процесс перестановки объектов заданной со-
вокупности в определенном порядке (возрастающем или убы-
вающем).
Целью сортировки обычно является облегчение последу-
ющего поиска элементов в отсортированном множестве.
В зависимости от объема и структуры данных методы сор-
тировки подразделяются на:
• Внутренние - сортировка массивов
• Внешние - сортировка файлов
1
3. Формальное определение задачи сортировки
Дано: N объектов a1, a2, . . . , aN
Необходимо: упорядочить заданные объекты, т.е. переста-
вить их в такой последовательности ap1 , . . . , apN , чтобы их
ключи расположились в неубывающем порядке kp1 ≤ kp2 ≤
. . . ≤ k pN .
2
4. Устойчивость сортировки
При устойчивой сортироке относительный порядок элемен-
тов с одинаковыми ключами не меняется.
Если kpi = kpj и i < j, то pi < pj .
3
13. Анализ сортировки простым выбором
Наихудший случай: упорядоченный в обратном порядке мас-
сив
Количество сравнений:
C(N ) = (N − 1) + (N − 2) + . . . + 1 = N ·(N −1) = O(N 2)
2
Количество пересылок:
M (N ) = N − 1 = O(N )
Общее время: T (N ) = C(N ) + M (N ) = O(N 2)
12
14. Пирамидальная сортировка - сортировка выбором
Идея: поддерживать область массива в которой ищем в виде
сбалансированного дерева поиска (пирамиды, кучи, heap).
В h1, . . . , hn элемент hi образует пирамиду если:
• (2i ≤ n ⇒ hi ≥ h2i) ∧ h2i образует пирамиду;
• (2i + 1 ≤ n ⇒ hi ≥ h2i+1) ∧ h2i+1 образует пирамиду;
Элементы h n +1, . . . , hn всегда образуют тривиальные пира-
2
миды.
13
17. Алгоритм пирамидальной сортировки
1. Входную последовательность превращаем в пирамиду.
2. Входная и готовая последовательность хранятся в одном
массиве. Берем голову пирамиды и помещаем в готовую
последовательность. Затем восстанавливаем пирамиду.
И повторяем до тех пор пока вся посследовательность
не будет обработана.
16
24. Анализ пирамидальной сортировки
Время просеивания: 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
28. Список литературы
• Цикова В.А., Чурина Т.Г. Методы программирования: пе-
рестановки, поиск и сортировка: Учеб. пособие / Ново-
сиб. гос. ун-т. Новосибирск, 2006. Ч.2. 58 с. сс.26-41.
• Ахо А., Хопкрофт Д., Ульман Д. Структуры данных и
алгоритмы. - М. : Издательский дом “Вильямс”, 2000.
сс.228-234, 244-246.
• Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К. Алгорит-
мы: построение и анализ, 2-е издание. - М. : Издатель-
ский дом “Вильямс”, 2007. сс.173-197.
27
29. • Кнут Д, Искусство программирования, том 3. Сортировка
и поиск, 2-е изд. - М. : Издательский дома “Вильямс”,
2000. сс.92-180.