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