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

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    Favorites, Groups & Events

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

    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
    5. Внутренние сортировки • вставка (включение); • выбор; • обмен; • подсчет; • разделение; • слияние. 4
    6. Сортировка простыми вставками 40 | 51 8 38 90 14 2 63 40 51 | 8 38 90 14 2 63 8 40 51 | 38 90 14 2 63 8 38 40 51 | 90 14 2 63 8 38 40 51 90 | 14 2 63 8 14 38 40 51 90 | 2 63 2 8 14 38 40 51 90 | 63 2 8 14 38 40 51 63 90 | 5
    7. Сортировка простыми вставками 6
    8. Анализ сортировки простыми вставками Наихудший случай: упорядоченный в обратном порядке мас- сив Количество сравнений: C(N ) = 1 + 2 + 3 + . . . + N − 1 = N ·(N −1) = O(N 2) 2 Количество пересылок: M (N ) = N cdot(N −1) + 2 · (N − 1) = O(N 2) 2 Общее время: T (N ) = C(N ) + M (N ) = O(N 2) 7
    9. Сортировка бинарными вставками Для поиска места используем бинарный поиск. Количество сравнений: C(N ) = O(N · log(N )) Количество пересылок: M (N ) = O(N 2) Общее время: T (N ) = C(N ) + M (N ) = O(N 2) 8
    10. Сортировка вставками с убывающим шагом. Метод Шел- ла. На семинар. 9
    11. Сортировка простым выбором | 40 51 8 38 90 14 2 63 2 | 40 51 8 38 90 14 63 2 8 | 40 51 38 90 14 63 2 8 14 | 40 51 38 90 63 2 8 14 38 | 40 51 90 63 2 8 14 38 40 | 51 90 63 2 8 14 38 40 51 | 90 63 2 8 14 38 40 51 63 | 90 2 8 14 38 40 51 63 90 | 10
    12. Сортировка простым выбором 11
    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
    15. Полная пирамида для 15-ти элементов 14
    16. Полная пирамида для 12-ти элементов 15
    17. Алгоритм пирамидальной сортировки 1. Входную последовательность превращаем в пирамиду. 2. Входная и готовая последовательность хранятся в одном массиве. Берем голову пирамиды и помещаем в готовую последовательность. Затем восстанавливаем пирамиду. И повторяем до тех пор пока вся посследовательность не будет обработана. 16
    18. Просеивание 17
    19. Просеивание 18
    20. Построение пирамиды 19
    21. Сортировка пирамиды 20
    22. Сортировка пирамиды (1 из 2) 21
    23. Сортировка пирамиды (2 из 2) 22
    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
    25. Сортировка простым обменом. Метод пузырька. 24
    26. Анализ сортировки простым обменом Наихудший случай: упорядоченный в обратном порядке мас- сив Количество сравнений: 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
    27. Улучшенная сортировка обменом. Шейкер-сортировка. На семинар. 26
    28. Список литературы • Цикова В.А., Чурина Т.Г. Методы программирования: пе- рестановки, поиск и сортировка: Учеб. пособие / Ново- сиб. гос. ун-т. Новосибирск, 2006. Ч.2. 58 с. сс.26-41. • Ахо А., Хопкрофт Д., Ульман Д. Структуры данных и алгоритмы. - М. : Издательский дом “Вильямс”, 2000. сс.228-234, 244-246. • Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К. Алгорит- мы: построение и анализ, 2-е издание. - М. : Издатель- ский дом “Вильямс”, 2007. сс.173-197. 27
    29. • Кнут Д, Искусство программирования, том 3. Сортировка и поиск, 2-е изд. - М. : Издательский дома “Вильямс”, 2000. сс.92-180.
    SlideShare Zeitgeist 2009

    + Nikolay GrebenshikovNikolay Grebenshikov Nominate

    custom

    131 views, 0 favs, 0 embeds more stats

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 131
      • 131 on SlideShare
      • 0 from embeds
    • Comments 0
    • Favorites 0
    • Downloads 0
    Most viewed embeds

    more

    All embeds

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories