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

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

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

    1. Хакасский государственный университет им. Н.Ф. Катанова Структуры и алгоритмы обработки данных Лекция: Сортировка. Часть №2. Николай Гребенщиков, www.grebenshikov.ru
    2. Сортировка с разделением (быстрая сортировка) 1. Разделяем массив на два подмассива [1 . . . m] и [m + 1 . . . N ], причем ∀i, j : 1 ≤ i ≤ m ∧ m < j ≤ N ⇒ ai ≤ aj 2. Рекурсивно сортируем получившиеся два подмассива. m называется медианой. 1
    3. Алгоритм быстрой сортировки QuickSort(A, p, r) 1 if p < r 2 then q ← P artition(A, p, r) 3 Quicksort(A, p, q − 1) 4 Quicksort(A, q + 1, r) 2
    4. Алгоритм разделения в быстрой сортировке Partition(A, p, r) 1 x ← A[r] 2 i←p−1 3 for j ← p to r − 1 4 do if A[i] ≤ x 5 then i ← i + 1 6 Обменять A[i] ↔ A[j] 7 Обменять A[i + 1] ↔ A[r] 8 return i + 1 3
    5. Алгоритм быстрой сортировки на С 4
    6. Работа быстрой сортировки (1 из 2) 5
    7. Работа быстрой сортировки (2 из 2) 6
    8. Анализ быстрой сортировки (наихудший случай) Предположим, что все элементы различны. Наихудший случай: когда при разделении один из массивов не имеет элементов. T (n) = T (0) + T (n − 1) + Θ(n) = Θ(1) + T (n − 1) + Θ(n) = T (n − 1) + Θ(n) = Θ(n2) C(N ) = M (N ) 7
    9. Анализ быстрой сортировки (наихудший случай) n T (n) = Θ( c · k) + n · Θ(1) = Θ(n2 + n) = Θ(n2) k=1 8
    10. Анализ быстрой сортировки (наилучший случай) Наилудший случай: когда при разделении массив разделяет- ся на равные части. T (n) = 2T (n/2) + Θ(n) = Θ(n · log(n)) 9
    11. Рандомизированная быстрая сортировка • Время работы не зависит от порядка элементов во вход- ных данных. • Не нужно предположений о распределении входных дан- ных. • Нет входных данных, которые приводят к наихудшему случаю. • Наихудший случай определяется только генератором слу- чайных чисел. 10
    12. Рандомизированная быстрая сортировка Выбираем граничный элемент случайным образом! RandomizedPartition(A, p, r) 1 i ← Random(p, r) 2 Обменять A[r] ↔ A[i] 3 return P artition(A, p, r) RandomizedQuickSort(A, p, r) 1 if p < r 2 then q ← RandomizedP artition(A, p, r) 3 RandomizedQuicksort(A, p, q − 1) 4 RandomizedQuicksort(A, q + 1, r) 11
    13. Анализ рандомизированной быстрой сортировки T (n) = функция имеющая случайный характер. Пусть выбор элемента разделения осуществляется независимым образом.  1, разделение(k : n − k − 1) Введем случайный индикатор: Xk = 0, иначе 1 E[Xk ] = 0 · P r {Xk = 0} + 1 · P r {Xk = 1} = P r {Xk = 1} = n 12
    14. Анализ рандомизированной быстрой сортировки  T (0) + T (n − 1) + Θ(n),  разделение(0 : n − 1)   T (1) + T (n − 2) + Θ(n),  разделение(1 : n − 2) T (n) = . . .    T (n − 1) + T (0) + Θ(n), разделение(n − 1 : 0)   n−1 = Xk (T (k) + T (n − k − 1) + Θ(n)) k=0 13
    15. Анализ рандомизированной быстрой сортировки n−1 E[T (n)] = E[ Xk (T (k) + T (n − k − 1) + Θ(n))] k=0 n−1 = E[Xk ] · E[ T (k) + T (n − k − 1) + Θ(n))] k=0 n−1 1 1 n−1 1 n−1 = E[T (k)] + E[T (n − k − 1)] + Θ(n) n k=0 n k=0 n k=0 2 n−1 = E[T (k)] + Θ(n) n k=0 2 n−1 = E[T (k)] + Θ(n) n k=2 14
    16. Анализ рандомизированной быстрой сортировки Докажем, что E[T (n)] ≤ a · n · log(n), для a − const, a > 0. Базовый шаг: выберем a, что E[T (n)] ≤ a · n · log(n) для малого n. n−1 1 2 1 Используем факт, что k · log(k) ≤ n log(n) − n2 k=2 2 8 15
    17. Анализ рандомизированной быстрой сортировки Подстановка: 2 n−1 E[T (n)] ≤ a · k · log(k) + Θ(n) n k=2 2a 1 2 1 ≤ ( n log(n) − n2) + Θ(n) n 2 a8 n · = a · n · log(n) − ( − Θ(n)) 4 ·n a ≤ a · n · log(n), если > Θ(n) 4 16
    18. Наименьшее время сортировки Теорема. В любом алгоритме, упорядочивающем с помо- щью сравнения пар, на упорядочивание последовательности из N элементов тратится не меньше c · N · log2N сравнений при c = 0 и N → ∞. T (n) > c · N · log2N , при c = 0 и N → ∞ 17
    19. Наименьшее время сортировки. Доказательство Число перестановок последовательности из N элементов рав- но N !. Сортировка путем сравнения пар есть спуск по дереву ре- шений - двоичному, где листья перестановки, а внутренние узлы условия. 18
    20. Дерево решений сортировки для последовательности из 3-х элементов 19
    21. Наименьшее время сортировки. Доказательство N N! ≥ N2 2 h ≥ log2(N !) ≥ N log2 N ≥ N log2N 2 2 4 20
    22. Сортировка за линейное время. Сортировка подсчетом • Все n входных элементов - целые числа, пренадлежащие [0, k], где k - целая константа. • Если k = O(n), то T (n) = Θ(n) 21
    23. Сортировка подсчетом CountingSort(A, B, k) 1 for i ← 0 to k 2 do C[i] ← 0 3 for j ← 1 to length[A] 4 do C[A[j]] ← C[A[j]] + 1 5 £ В C[i] хранится количество элементов равных i 6 for i ← 1 to k 7 do C[i] ← C[i] + C[i − 1] 8 £ В C[i] хранится количество элементов не превышающих i 9 for j ← length[A] downto 1 10 do B[C[A[j]]] ← A[j] 11 C[A[j]] ← C[A[j]] − 1 22
    24. Сортировка подсчетом Визуализация? 23
    25. Сортировка за линейное время На семинар: • Поразрядная сортировка • Карманная сортировка 24
    26. Список литературы • Цикова В.А., Чурина Т.Г. Методы программирования: пе- рестановки, поиск и сортировка: Учеб. пособие / Ново- сиб. гос. ун-т. Новосибирск, 2006. Ч.2. 58 с. сс.42-47. • Ахо А., Хопкрофт Д., Ульман Д. Структуры данных и алгоритмы. - М. : Издательский дом “Вильямс”, 2000. сс.235-257. • Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К. Алгорит- мы: построение и анализ, 2-е издание. - М. : Издатель- ский дом “Вильямс”, 2007. сс.198-239. 25
    27. • Кнут Д, Искусство программирования, том 3. Сортировка и поиск, 2-е изд. - М. : Издательский дома “Вильямс”, 2000. сс.192-203.
    SlideShare Zeitgeist 2009

    + Nikolay GrebenshikovNikolay Grebenshikov Nominate

    custom

    78 views, 0 favs, 0 embeds more stats

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 78
      • 78 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