SlideShare a Scribd company logo
1 of 29
Download to read offline
Хакасский государственный университет им. Н.Ф. Катанова

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

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

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

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

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


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


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

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

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

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




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

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

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




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


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


 • выбор;


 • обмен;


 • подсчет;


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


 • слияние.

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

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
Сортировка простыми вставками




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

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

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

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
Сортировка бинарными вставками

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

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

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

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




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

На семинар.




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

|   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
Сортировка простым выбором




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

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

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

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.

More Related Content

What's hot

Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритм...
Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритм...Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритм...
Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритм...Nikolay Grebenshikov
 
Лекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмыЛекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмыMikhail Kurnosov
 
Лекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмыЛекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмыMikhail Kurnosov
 
Лекция 8: Графы. Обходы графов
Лекция 8: Графы. Обходы графовЛекция 8: Графы. Обходы графов
Лекция 8: Графы. Обходы графовMikhail Kurnosov
 
Лекция №8. Поиск. Хэширование. Предмет "Структуры и алгоритмы обработки данных"
Лекция №8. Поиск. Хэширование. Предмет "Структуры и алгоритмы обработки данных"Лекция №8. Поиск. Хэширование. Предмет "Структуры и алгоритмы обработки данных"
Лекция №8. Поиск. Хэширование. Предмет "Структуры и алгоритмы обработки данных"Nikolay Grebenshikov
 
Лекция 8: Графы. Обходы графов
Лекция 8: Графы. Обходы графовЛекция 8: Графы. Обходы графов
Лекция 8: Графы. Обходы графовMikhail Kurnosov
 
Use of eliptic curves for generating digital signature
Use of eliptic curves for generating digital signatureUse of eliptic curves for generating digital signature
Use of eliptic curves for generating digital signatureAndrei Poliakov
 
Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет ...
Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет ...Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет ...
Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет ...Nikolay Grebenshikov
 
практика 15
практика 15практика 15
практика 15student_kai
 
Лекция 9: Графы. Поиск кратчайшего пути в графе
Лекция 9: Графы. Поиск кратчайшего пути в графеЛекция 9: Графы. Поиск кратчайшего пути в графе
Лекция 9: Графы. Поиск кратчайшего пути в графеMikhail Kurnosov
 
методы решения логарифмических уравнений
методы решения логарифмических уравненийметоды решения логарифмических уравнений
методы решения логарифмических уравненийNickEliot
 
Методы обучения линейных моделей
Методы обучения линейных моделейМетоды обучения линейных моделей
Методы обучения линейных моделейAlex
 
Графики и свойства тригонометрических функций синуса и косинуса
Графики и свойства тригонометрических функций  синуса и косинусаГрафики и свойства тригонометрических функций  синуса и косинуса
Графики и свойства тригонометрических функций синуса и косинусаTatiana Adzhieva
 
Программирование: от сложного к простому
Программирование: от сложного к простомуПрограммирование: от сложного к простому
Программирование: от сложного к простомуNikolay Grebenshikov
 
Лекция 13 Теоретико-числовые алгоритмы Часть 2
Лекция 13 Теоретико-числовые алгоритмы Часть 2Лекция 13 Теоретико-числовые алгоритмы Часть 2
Лекция 13 Теоретико-числовые алгоритмы Часть 2simple_people
 
Лекция 8. Графы. Обходы графов
Лекция 8. Графы. Обходы графовЛекция 8. Графы. Обходы графов
Лекция 8. Графы. Обходы графовMikhail Kurnosov
 
DUMP-2013 Наука и жизнь - Приближённый подсчёт количества уникальных элементо...
DUMP-2013 Наука и жизнь - Приближённый подсчёт количества уникальных элементо...DUMP-2013 Наука и жизнь - Приближённый подсчёт количества уникальных элементо...
DUMP-2013 Наука и жизнь - Приближённый подсчёт количества уникальных элементо...it-people
 

What's hot (20)

Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритм...
Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритм...Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритм...
Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритм...
 
Лекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмыЛекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмы
 
Лекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмыЛекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмы
 
Funkciya y cos_ee_svojstva_i_grafik
Funkciya y cos_ee_svojstva_i_grafikFunkciya y cos_ee_svojstva_i_grafik
Funkciya y cos_ee_svojstva_i_grafik
 
Лекция 8: Графы. Обходы графов
Лекция 8: Графы. Обходы графовЛекция 8: Графы. Обходы графов
Лекция 8: Графы. Обходы графов
 
Лекция №8. Поиск. Хэширование. Предмет "Структуры и алгоритмы обработки данных"
Лекция №8. Поиск. Хэширование. Предмет "Структуры и алгоритмы обработки данных"Лекция №8. Поиск. Хэширование. Предмет "Структуры и алгоритмы обработки данных"
Лекция №8. Поиск. Хэширование. Предмет "Структуры и алгоритмы обработки данных"
 
Лекция 8: Графы. Обходы графов
Лекция 8: Графы. Обходы графовЛекция 8: Графы. Обходы графов
Лекция 8: Графы. Обходы графов
 
Оценка сложности алгоритма
Оценка сложности алгоритмаОценка сложности алгоритма
Оценка сложности алгоритма
 
Use of eliptic curves for generating digital signature
Use of eliptic curves for generating digital signatureUse of eliptic curves for generating digital signature
Use of eliptic curves for generating digital signature
 
Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет ...
Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет ...Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет ...
Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет ...
 
практика 15
практика 15практика 15
практика 15
 
Лекция 9: Графы. Поиск кратчайшего пути в графе
Лекция 9: Графы. Поиск кратчайшего пути в графеЛекция 9: Графы. Поиск кратчайшего пути в графе
Лекция 9: Графы. Поиск кратчайшего пути в графе
 
методы решения логарифмических уравнений
методы решения логарифмических уравненийметоды решения логарифмических уравнений
методы решения логарифмических уравнений
 
Методы обучения линейных моделей
Методы обучения линейных моделейМетоды обучения линейных моделей
Методы обучения линейных моделей
 
Графики и свойства тригонометрических функций синуса и косинуса
Графики и свойства тригонометрических функций  синуса и косинусаГрафики и свойства тригонометрических функций  синуса и косинуса
Графики и свойства тригонометрических функций синуса и косинуса
 
Программирование: от сложного к простому
Программирование: от сложного к простомуПрограммирование: от сложного к простому
Программирование: от сложного к простому
 
Основы MATLAB. Численные методы
Основы MATLAB. Численные методыОсновы MATLAB. Численные методы
Основы MATLAB. Численные методы
 
Лекция 13 Теоретико-числовые алгоритмы Часть 2
Лекция 13 Теоретико-числовые алгоритмы Часть 2Лекция 13 Теоретико-числовые алгоритмы Часть 2
Лекция 13 Теоретико-числовые алгоритмы Часть 2
 
Лекция 8. Графы. Обходы графов
Лекция 8. Графы. Обходы графовЛекция 8. Графы. Обходы графов
Лекция 8. Графы. Обходы графов
 
DUMP-2013 Наука и жизнь - Приближённый подсчёт количества уникальных элементо...
DUMP-2013 Наука и жизнь - Приближённый подсчёт количества уникальных элементо...DUMP-2013 Наука и жизнь - Приближённый подсчёт количества уникальных элементо...
DUMP-2013 Наука и жизнь - Приближённый подсчёт количества уникальных элементо...
 

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

Статистическое сравнение классификаторов
Статистическое сравнение классификаторовСтатистическое сравнение классификаторов
Статистическое сравнение классификаторовAnton Konushin
 
1332519 (1).pptx
1332519 (1).pptx1332519 (1).pptx
1332519 (1).pptxrdes1
 
Алгоритмы и структуры данных весна 2014 лекция 3
Алгоритмы и структуры данных весна 2014 лекция 3Алгоритмы и структуры данных весна 2014 лекция 3
Алгоритмы и структуры данных весна 2014 лекция 3Technopark
 
Лекция №7. Поиск. Деревья поиска. Предмет "Структуры и алгоритмы обработки да...
Лекция №7. Поиск. Деревья поиска. Предмет "Структуры и алгоритмы обработки да...Лекция №7. Поиск. Деревья поиска. Предмет "Структуры и алгоритмы обработки да...
Лекция №7. Поиск. Деревья поиска. Предмет "Структуры и алгоритмы обработки да...Nikolay Grebenshikov
 
Лекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировкиЛекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировкиMikhail Kurnosov
 
Classifier evaluation and comparison
Classifier evaluation and comparisonClassifier evaluation and comparison
Classifier evaluation and comparisonAnton Konushin
 
Лекция 12 Теоретико-числовые алгоритмы Часть 1
Лекция 12 Теоретико-числовые алгоритмы Часть 1Лекция 12 Теоретико-числовые алгоритмы Часть 1
Лекция 12 Теоретико-числовые алгоритмы Часть 1simple_people
 
Алгоритмы и структуры данных осень 2013 лекция 4
Алгоритмы и структуры данных осень 2013 лекция 4Алгоритмы и структуры данных осень 2013 лекция 4
Алгоритмы и структуры данных осень 2013 лекция 4Technopark
 
презентация по теме «действительные числа»
презентация по теме «действительные числа»презентация по теме «действительные числа»
презентация по теме «действительные числа»Kirrrr123
 
Lecture 06. Рекуррентные соотношения и числа Фибоначчи.
Lecture 06. Рекуррентные соотношения и числа Фибоначчи.Lecture 06. Рекуррентные соотношения и числа Фибоначчи.
Lecture 06. Рекуррентные соотношения и числа Фибоначчи.Vladimir Tcherniak
 
20091108 algorithmsfornphardproblems kulikov_lecture08
20091108 algorithmsfornphardproblems kulikov_lecture0820091108 algorithmsfornphardproblems kulikov_lecture08
20091108 algorithmsfornphardproblems kulikov_lecture08Computer Science Club
 
20110313 systems of_typed_lambda_calculi_moskvin_lecture06
20110313 systems of_typed_lambda_calculi_moskvin_lecture0620110313 systems of_typed_lambda_calculi_moskvin_lecture06
20110313 systems of_typed_lambda_calculi_moskvin_lecture06Computer Science Club
 
Лекция 2 Сортировки, поиск и порядковые статистики
Лекция 2 Сортировки, поиск и порядковые статистикиЛекция 2 Сортировки, поиск и порядковые статистики
Лекция 2 Сортировки, поиск и порядковые статистикиsimple_people
 
Лекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировкиЛекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировкиMikhail Kurnosov
 
Лекция 13: Трудноразрешимые задачи. NP-полнота.
Лекция 13: Трудноразрешимые задачи. NP-полнота.Лекция 13: Трудноразрешимые задачи. NP-полнота.
Лекция 13: Трудноразрешимые задачи. NP-полнота.Mikhail Kurnosov
 
сортировка массива
сортировка массивасортировка массива
сортировка массиваlonge7
 
Презентация на тему: Повторение курса информатики 7 класс
Презентация на тему: Повторение курса информатики 7 классПрезентация на тему: Повторение курса информатики 7 класс
Презентация на тему: Повторение курса информатики 7 класс2berkas
 

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

Статистическое сравнение классификаторов
Статистическое сравнение классификаторовСтатистическое сравнение классификаторов
Статистическое сравнение классификаторов
 
Алгоритмы сортировки
Алгоритмы сортировкиАлгоритмы сортировки
Алгоритмы сортировки
 
1332519 (1).pptx
1332519 (1).pptx1332519 (1).pptx
1332519 (1).pptx
 
Алгоритмы и структуры данных весна 2014 лекция 3
Алгоритмы и структуры данных весна 2014 лекция 3Алгоритмы и структуры данных весна 2014 лекция 3
Алгоритмы и структуры данных весна 2014 лекция 3
 
Лекция №7. Поиск. Деревья поиска. Предмет "Структуры и алгоритмы обработки да...
Лекция №7. Поиск. Деревья поиска. Предмет "Структуры и алгоритмы обработки да...Лекция №7. Поиск. Деревья поиска. Предмет "Структуры и алгоритмы обработки да...
Лекция №7. Поиск. Деревья поиска. Предмет "Структуры и алгоритмы обработки да...
 
Лекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировкиЛекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировки
 
Classifier evaluation and comparison
Classifier evaluation and comparisonClassifier evaluation and comparison
Classifier evaluation and comparison
 
Лекция 12 Теоретико-числовые алгоритмы Часть 1
Лекция 12 Теоретико-числовые алгоритмы Часть 1Лекция 12 Теоретико-числовые алгоритмы Часть 1
Лекция 12 Теоретико-числовые алгоритмы Часть 1
 
Алгоритмы и структуры данных осень 2013 лекция 4
Алгоритмы и структуры данных осень 2013 лекция 4Алгоритмы и структуры данных осень 2013 лекция 4
Алгоритмы и структуры данных осень 2013 лекция 4
 
презентация по теме «действительные числа»
презентация по теме «действительные числа»презентация по теме «действительные числа»
презентация по теме «действительные числа»
 
Lecture 06. Рекуррентные соотношения и числа Фибоначчи.
Lecture 06. Рекуррентные соотношения и числа Фибоначчи.Lecture 06. Рекуррентные соотношения и числа Фибоначчи.
Lecture 06. Рекуррентные соотношения и числа Фибоначчи.
 
Diskretn analiz
Diskretn analizDiskretn analiz
Diskretn analiz
 
Diskretn analiz
Diskretn analizDiskretn analiz
Diskretn analiz
 
20091108 algorithmsfornphardproblems kulikov_lecture08
20091108 algorithmsfornphardproblems kulikov_lecture0820091108 algorithmsfornphardproblems kulikov_lecture08
20091108 algorithmsfornphardproblems kulikov_lecture08
 
20110313 systems of_typed_lambda_calculi_moskvin_lecture06
20110313 systems of_typed_lambda_calculi_moskvin_lecture0620110313 systems of_typed_lambda_calculi_moskvin_lecture06
20110313 systems of_typed_lambda_calculi_moskvin_lecture06
 
Лекция 2 Сортировки, поиск и порядковые статистики
Лекция 2 Сортировки, поиск и порядковые статистикиЛекция 2 Сортировки, поиск и порядковые статистики
Лекция 2 Сортировки, поиск и порядковые статистики
 
Лекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировкиЛекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировки
 
Лекция 13: Трудноразрешимые задачи. NP-полнота.
Лекция 13: Трудноразрешимые задачи. NP-полнота.Лекция 13: Трудноразрешимые задачи. NP-полнота.
Лекция 13: Трудноразрешимые задачи. NP-полнота.
 
сортировка массива
сортировка массивасортировка массива
сортировка массива
 
Презентация на тему: Повторение курса информатики 7 класс
Презентация на тему: Повторение курса информатики 7 классПрезентация на тему: Повторение курса информатики 7 класс
Презентация на тему: Повторение курса информатики 7 класс
 

More from Nikolay Grebenshikov

Лекция №3. Свойства и моделирование стандартных схем программ. Предмет "Теори...
Лекция №3. Свойства и моделирование стандартных схем программ. Предмет "Теори...Лекция №3. Свойства и моделирование стандартных схем программ. Предмет "Теори...
Лекция №3. Свойства и моделирование стандартных схем программ. Предмет "Теори...Nikolay Grebenshikov
 
Лекция №1. Введение. Предмет "Теория вычислительных процессов"
Лекция №1. Введение. Предмет "Теория вычислительных процессов"Лекция №1. Введение. Предмет "Теория вычислительных процессов"
Лекция №1. Введение. Предмет "Теория вычислительных процессов"Nikolay Grebenshikov
 
Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...
Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...
Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...Nikolay Grebenshikov
 
Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Стр...
Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Стр...Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Стр...
Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Стр...Nikolay Grebenshikov
 
Лекция №5. Линейные структуры данных. Предмет "Структуры и алгоритмы обработк...
Лекция №5. Линейные структуры данных. Предмет "Структуры и алгоритмы обработк...Лекция №5. Линейные структуры данных. Предмет "Структуры и алгоритмы обработк...
Лекция №5. Линейные структуры данных. Предмет "Структуры и алгоритмы обработк...Nikolay Grebenshikov
 
Лекция №6. Деревья. Предмет "Структуры и алгоритмы обработки данных"
Лекция №6. Деревья. Предмет "Структуры и алгоритмы обработки данных"Лекция №6. Деревья. Предмет "Структуры и алгоритмы обработки данных"
Лекция №6. Деревья. Предмет "Структуры и алгоритмы обработки данных"Nikolay Grebenshikov
 
Лекция №2. Абстрактные типы данных. ООП. Предмет "Структуры и алгоритмы обраб...
Лекция №2. Абстрактные типы данных. ООП. Предмет "Структуры и алгоритмы обраб...Лекция №2. Абстрактные типы данных. ООП. Предмет "Структуры и алгоритмы обраб...
Лекция №2. Абстрактные типы данных. ООП. Предмет "Структуры и алгоритмы обраб...Nikolay Grebenshikov
 
Лекция №1. Введение. Предмет "Структуры и алгоритмы обработки данных"
Лекция №1. Введение. Предмет "Структуры и алгоритмы обработки данных"Лекция №1. Введение. Предмет "Структуры и алгоритмы обработки данных"
Лекция №1. Введение. Предмет "Структуры и алгоритмы обработки данных"Nikolay Grebenshikov
 

More from Nikolay Grebenshikov (8)

Лекция №3. Свойства и моделирование стандартных схем программ. Предмет "Теори...
Лекция №3. Свойства и моделирование стандартных схем программ. Предмет "Теори...Лекция №3. Свойства и моделирование стандартных схем программ. Предмет "Теори...
Лекция №3. Свойства и моделирование стандартных схем программ. Предмет "Теори...
 
Лекция №1. Введение. Предмет "Теория вычислительных процессов"
Лекция №1. Введение. Предмет "Теория вычислительных процессов"Лекция №1. Введение. Предмет "Теория вычислительных процессов"
Лекция №1. Введение. Предмет "Теория вычислительных процессов"
 
Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...
Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...
Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...
 
Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Стр...
Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Стр...Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Стр...
Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Стр...
 
Лекция №5. Линейные структуры данных. Предмет "Структуры и алгоритмы обработк...
Лекция №5. Линейные структуры данных. Предмет "Структуры и алгоритмы обработк...Лекция №5. Линейные структуры данных. Предмет "Структуры и алгоритмы обработк...
Лекция №5. Линейные структуры данных. Предмет "Структуры и алгоритмы обработк...
 
Лекция №6. Деревья. Предмет "Структуры и алгоритмы обработки данных"
Лекция №6. Деревья. Предмет "Структуры и алгоритмы обработки данных"Лекция №6. Деревья. Предмет "Структуры и алгоритмы обработки данных"
Лекция №6. Деревья. Предмет "Структуры и алгоритмы обработки данных"
 
Лекция №2. Абстрактные типы данных. ООП. Предмет "Структуры и алгоритмы обраб...
Лекция №2. Абстрактные типы данных. ООП. Предмет "Структуры и алгоритмы обраб...Лекция №2. Абстрактные типы данных. ООП. Предмет "Структуры и алгоритмы обраб...
Лекция №2. Абстрактные типы данных. ООП. Предмет "Структуры и алгоритмы обраб...
 
Лекция №1. Введение. Предмет "Структуры и алгоритмы обработки данных"
Лекция №1. Введение. Предмет "Структуры и алгоритмы обработки данных"Лекция №1. Введение. Предмет "Структуры и алгоритмы обработки данных"
Лекция №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
  • 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
  • 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
  • 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
  • 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.