SlideShare a Scribd company logo
1 of 34
РОССИЙСКАЯ АКАДЕМИЯ НАРОДНОГО ХОЗЯЙСТВА И 
ГОСУДАРСТВЕННОЙ СЛУЖБЫ ПРИ ПРЕЗИДЕНТЕ 
РОССИЙСКОЙ ФЕДЕРАЦИИ 
Нижегородский институт управления 
Кафедра информатики и информационных технологий 
Введение в алгоритмы и 
структуры данных 
Ивина Наталья Львовна 
доцент кафедры Информатики и ИТ
Тема 3. Алгоритмы сортировки 
Общие понятия. Цель сортировки. 
Внутренняя и внешняя сортировки. 
Сортировка методом прямого обмена (сортировка методом 
пузырька). 
Шейкерная сортировка. 
Сортировка методом прямого выбора. Сортировка методом 
прямого включения. Сортировка методом Шелла. 
Быстрая сортировка. 
Сортировка слиянием упорядоченных массивов. 
2
Введение 
Сортировка - процесс упорядочения множества подобных 
информационных объектов в порядке возрастания или убывания 
их значений. 
Цель сортировки - упорядочивание данных для облегчения 
последующего поиска элементов в отсортированном множестве. 
3
Характеристики алгоритмов 
сортировки: 
• Устойчивость – изменение относительного положения равных 
элементов (метод сортировки устойчивый, если при его 
применении не изменяется относительное положение записей с 
равными значениями ключа) 
• Естественность поведения – улучшение работы алгоритма при 
улучшении (частичной или полной сортировке) входных данных 
• Сравнения - количество операций сравнения элементов 
• Перестановки - количество перестановок элементов 
4
Виды сортировки: 
• внутренняя сортировка - сортировка массивов записей, 
целиком расположенных в оперативной памяти; 
• внешняя сортировка - сортировка файлов, хранящихся во 
внешней памяти и не помещающихся полностью в оперативной 
памяти. 
5
Методы внутренней сортировки: 
• Вставка 
• Обмен 
• Выбор 
• Распределение 
• Слияние 
6
Оценка алгоритмов сортировки: 
• С какой средней скоростью алгоритм сортирует информацию? 
• Какова скорость для лучшего случая и для худшего случая? 
• Поведение алгоритма является естественным или является не 
естественным? 
• Выполняется ли перестановка элементов для одинаковых 
ключей? 
7
Сортировка методом прямого 
обмена (сортировка методом 
пузырька) 
Нулевой проход сортировки, сравниваемые пары выделены. 
8
Сортировка методом прямого 
обмена (сортировка методом 
пузырька) 
Состояние массива в начале каждого прохода. 
9
Сортировка методом 
прямого обмена (сортировка 
методом пузырька) 
Оценка сложности 
n - число сортируемых элементов массива 
внешний цикл выполняется (n-1) раз; 
внутренний цикл выполняется n/2 раз 
Число операций сравнения: (n2-n)/2 - ВСЕГДА! 
Число операций обмена: 
наилучший случай - 0, 
средний случай - 3/4 (n2-n), 
наихудший случай - 3/2 (n2-n) 
Сложность: О(n2) 
10
Шейкерная (челночная) 
сортировка 
Улучшенная версия сортировки пузырьковым методом 
Состояние массива в начале каждого прохода. 
11
Число сравнений не изменяется - (n2-n)/2, 
число обменов уменьшается лишь на незначительную 
величину. 
Сложность О(n2) 
Шейкерная (челночная) 
сортировка. Оценка сложности 
12
Сортировка методом 
прямого выбора 
На i-м шаге выбираем наименьший из элементов a[i] ... a[n] и 
меняем его местами с a[i]. 
Последовательность шагов при n=5: 
Вне зависимости от номера текущего шага i, последовательность 
a[0]...a[i] (выделена курсивом) является упорядоченной. 
13
Сортировка методом прямого 
выбора. Оценка сложности 
Алгоритм делает n-1 итераций, на каждой из которых 
осуществляется еще n-i проходов (сравнений) и одна 
перестановка. 
Внешний цикл выполняется (n-1) раз, 
внутренний цикл выполняется n/2 раз. 
Число сравнений: 1/2 (n2-n) 
Число операций обмена : 
лучший случай - 3(n-1), худший случай - n2/4+3(n-1) 
средний - n(ln n+ y), y ~ 0,577216 
Общее количество операций : 
n + (n-1 + 1) + (n-2 + 1) + ... + 2 = 1/2*(n2 + 2*n) - 1. 
Сложность ~ O(n2). 
14
Сортировка методом прямого 
включения 
Рассмотрим действия алгоритма на i-м шаге. 
Последовательность к этому моменту разделена на две части: 
готовую a[0]...a[i] и неупорядоченную a[i+1]...a[n]. 
На следующем, (i+1)-м каждом шаге алгоритма берем a[i+1] и 
вставляем на нужное место в готовую часть массива. 
Вставка элемента a[4] = 3 в упорядоченную подпоследовательность 
a[0]…a[3]. Сравниваемые пары выделены. 15
Сортировка вставками со 
сторожевым элементом 
Алгоритм прямого включения можно слегка улучшить. На каждом 
шаге внутреннего цикла проверяются 2 условия. Можно 
объединить их в одно, поставив в начало массива специальный 
сторожевой элемент. Он должен быть заведомо меньше всех 
остальных элементов массива. 
Тогда при j=0 будет заведомо верно a[0] <= x. Цикл остановится на 
нулевом элементе, что и было целью условия j>=0. 
16
Сортировка вставками со 
сторожевым элементом 
Однако, отсортированный массив будет не полон, так как из него 
исчезло первое число. 
Для окончания сортировки это число следует вернуть назад, а 
затем вставить в отсортированную последовательность a[1]...a[n]. 
17
Сортировка методом прямого 
включения. Оценка сложности 
Число операций сравнения зависит от исходной 
упорядоченности массива элементов: 
упорядоченный массив = (n-1), 
упорядоченный в обратном порядке = 1/2(n2+n)-1, среднее 
значение = 1/4 (n2+n-2). 
Число операций обмена : 
лучший случай = 2 (n-1), 
средний случай = 1/4 (n2+9n-10), 
худший случай = 1/2 (n2+3n-4). 
Cреднее, а также худшее число сравнений и перестановок 
оцениваются как O(n2) 
18
Сортировка методом Шелла 
Сначала сравниваются и сортируются между собой ключи, отстоящие 
один от другого на некотором расстоянии d. После этого процедура 
повторяется для некоторых меньших значений d, а завершается 
сортировка Шелла упорядочиванием элементов при d = 1 (обычной 
сортировкой вставками или простыми обменами). 
19
Сортировка методом Шелла 
32 95 16 82 24 66 35 19 75 54 40 43 93 68 
На первом шаге сортируются подсписки A, составленные из 
всех элементов A, различающихся на 5 позиций, то есть 
подсписки: 
A5,1 = (32,66,40), 
A5,2 = (95,35,43), 
A5,3 = (16,19,93), 
A5,4 = (82,75,68), 
A5,5 = (24,54). 
20
Сортировка методом Шелла 
Очевидно, лишь последняя сортировка необходима, чтобы 
расположить все элементы по своим местам. Так зачем нужны 
остальные ? 
Они продвигают элементы максимально близко к 
соответствующим позициям, так что в последней стадии число 
перемещений будет весьма невелико. Последовательность и так 
почти отсортирована. 
21
Сортировка методом Шелла. 
Выбор приращения 
Приращение - расстояние между сортируемыми элементами, в 
зависимости от прохода. В конце приращение всегда равно 1. 
Последовательность приращений определяет рост эффективности. 
Первоначально используемая Шеллом последовательность длин 
промежутков: 
d1 = N/2, di = di – 1 /2, dk = 1 
Сложность алгоритма О(сN2) в худшем случае. 
22
Формула Седжвика: 
Сортировка методом Шелла. 
Выбор приращения 
9*2s – 9*2s/2 + 1, если s четно 
inc [s] = 
8*2s – 6*2(s + 1)/2 + 1, если s нечетно 
inc[0] = 1, inc[1] = 5, ... 
Следует остановиться на значении inc[s-1], если 3*inc[s] > size. 
Среднее количество операций: O(n7/6), 
в худшем случае - порядка O(n4/3). 
23
Быстрая сортировка 
-cортировка разделением (Quicksort) 
-алгоритм разработанный английским информатиком Чарльзом 
Хоаром 
-используется в стандартных утилитах сортировки 
-основан на использовании обменного метода сортировки 
24
Быстрая сортировка 
Метод основан на подходе "разделяй-и-властвуй": 
1. из массива выбрать элемент, называемый опорным, a [i]; 
2. сравнить все остальные элементы с опорным, на основании 
сравнения разбить множество на три - «меньшие опорного», 
«равные» и «большие», расположить их в порядке меньшие- 
равные-большие; 
≤ a [i] a [i] ≥ a [i] 
3. для обоих подмассивов: если в подмассиве более двух 
элементов, рекурсивно запускаем для него ту же процедуру. 
В конце получится полностью отсортированная 
последовательность. 
25
Быстрая сортировка. Пример 
На входе массив a[0]...a[N] и опорный элемент p, по которому будет 
производиться разделение. 
1. Введем два указателя: i и j. В начале алгоритма они указывают, 
соответственно, на левый и правый конец последовательности. 
2. Будем двигать указатель i с шагом в 1 элемент по направлению к 
концу массива, пока не будет найден элемент a[i] >= p. Затем 
аналогичным образом начнем двигать указатель j от конца массива 
к началу, пока не будет найден a[j] <= p. 
3. Далее, если i <= j, меняем a[i] и a[j] местами и продолжаем двигать 
i,j по тем же правилам. Повторяем шаги 2-3, пока i <= j. 
26
Быстрая сортировка. Пример 
Рассмотрим работу процедуры для массива a[0]...a[6] и опорного 
элемента p = a[3]. 
27
Быстрая сортировка. 
Свойства алгоритма 
Общее быстродействие: O(n log n). 
Метод неустойчив. 
O(n2) операций, если каждый раз в качестве центрального 
элемента выбирается максимум или минимум входной 
последовательности. 
Сортировка использует дополнительную память, так как 
приблизительная глубина рекурсии составляет O(log n), а 
данные о рекурсивных подвызовах каждый раз добавляются в 
стек. 
28
Сортировка слиянием 
упорядоченных массивов. 
Джон фон Нейман 1945 год. 
Для решения задачи сортировки выполняются три этапа: 
1. Сортируемый массив разбивается на две части примерно 
одинакового размера; 
2. Каждая из получившихся частей сортируется отдельно, 
например - тем же самым алгоритмом; 
3. Два упорядоченных массива половинного размера соединяются 
в один. 
29
Сортировка слиянием 
упорядоченных массивов. 
Cоединение двух упорядоченных массивов в один. 
Пусть мы имеем два подмассива. Пусть также, элементы 
подмассивов в каждом из этих подмассивов отсортированы по 
возрастанию. Тогда: 
1.Слияние двух подмассивов в третий результирующий массив. 
На каждом шаге мы берём меньший из двух первых элементов 
подмассивов и записываем его в результирующий массив. Счетчики 
номеров элементов результирующего массива и подмассива из 
которого был взят элемент увеличиваем на 1. 
2."Прицепление" остатка. 
Когда один из подмассивов закончился, мы добавляем все 
оставшиеся элементы второго подмассива в результирующий массив. 
30
Приведем пример реализации 
алгоритма слияния двух 
упорядоченных массивов в 
один. На входе алгоритм 
получает два отсортированных 
массива, которые задаются 
своим размером и элементами 
типа int. На выходе алгоритм 
выводит упорядоченный 
массив, состоящий из всех 
элементов двух исходных. 
Сортировка слиянием 
упорядоченных массивов. 
31
Сортировка слиянием 
упорядоченных массивов. Оценка 
сложности данного метода. 
Число сравнений ключей и число пересылок оценивается как 
O(n*log n) 
Для сортировки массива размера n требуется 2*n элементов 
памяти. 
32
Сравнение методов внутренней 
сортировки 
Min Avg Max 
Прямое 
включение 
C = n-1 
M = 2x(n-1) 
(n2 + n - 2)/4 
(n2 - 9n - 10)/4 
(n2 -n)/2 - 1 
(n2 -3n - 4)/2 
Прямой 
выбор 
C = (n2 - n)/2 
M = 3x(n-1) 
(n2 - n)/2 
nx(ln n + 0.57) 
(n2 - n)/2 
n2/4 + 3x(n-1) 
Прямой 
обмен 
C = (n2 - n)/2 
M = 0 
(n2 - n)/2 
(n2 - n)x0.75 
(n2 - n)/2 
(n2 - n)x1.5 
Для сортировки методом Шелла порядок C и M есть O(n1.2), для 
сортировки со слиянием - O(n*log n). 
33
Сравнение времени сортировок 
сортировка пузырьком; 
шейкер-сортировка; 
сортировка выбором; 
сортировка вставками; 
сортировка вставками со 
сторожевым элементом; 
сортировка Шелла. 
34

More Related Content

What's hot

Radix and Shell sort
Radix and Shell sortRadix and Shell sort
Radix and Shell sorthannatamayao
 
Математика. 2 клас. Табличне множення та ділення
Математика. 2 клас. Табличне множення та ділення Математика. 2 клас. Табличне множення та ділення
Математика. 2 клас. Табличне множення та ділення Електронні книги Ранок
 
Розв’язування раціональних рівнянь вищих степенів
Розв’язування раціональних рівнянь вищих степенівРозв’язування раціональних рівнянь вищих степенів
Розв’язування раціональних рівнянь вищих степенівFormula.co.ua
 
Рівняння з параметрами
Рівняння з параметрамиРівняння з параметрами
Рівняння з параметрамиFormula.co.ua
 
17. Java data structures trees representation and traversal
17. Java data structures trees representation and traversal17. Java data structures trees representation and traversal
17. Java data structures trees representation and traversalIntro C# Book
 
Лекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмыЛекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмыMikhail Kurnosov
 
Lecture # 14 investment alternatives ii
Lecture # 14 investment alternatives iiLecture # 14 investment alternatives ii
Lecture # 14 investment alternatives iiBich Lien Pham
 
Yzm 2116 Bölüm 11 - Graph - Çizge
Yzm 2116   Bölüm 11 - Graph - ÇizgeYzm 2116   Bölüm 11 - Graph - Çizge
Yzm 2116 Bölüm 11 - Graph - ÇizgeDeniz KILINÇ
 
множення звичайних дробів
множення звичайних дробівмноження звичайних дробів
множення звичайних дробівjenny_lion89
 
Методичний посібник «Правильні многокутники»
Методичний посібник «Правильні многокутники»Методичний посібник «Правильні многокутники»
Методичний посібник «Правильні многокутники»Valyu66
 
Data Structures - Searching & sorting
Data Structures - Searching & sortingData Structures - Searching & sorting
Data Structures - Searching & sortingKaushal Shah
 
Системи рівнянь з параметрами
Системи рівнянь з параметрамиСистеми рівнянь з параметрами
Системи рівнянь з параметрамиFormula.co.ua
 
Giới thiệu Đại số quan hệ Phép toán tập hợp Phép chọn Phép chiếu Phép tích Ca...
Giới thiệu Đại số quan hệ Phép toán tập hợp Phép chọn Phép chiếu Phép tích Ca...Giới thiệu Đại số quan hệ Phép toán tập hợp Phép chọn Phép chiếu Phép tích Ca...
Giới thiệu Đại số quan hệ Phép toán tập hợp Phép chọn Phép chiếu Phép tích Ca...BangNgoVanCong
 
Yzm 2116 - Bölüm 4 (Stack, Yığın, Yığıt)
Yzm 2116 - Bölüm 4 (Stack, Yığın, Yığıt)Yzm 2116 - Bölüm 4 (Stack, Yığın, Yığıt)
Yzm 2116 - Bölüm 4 (Stack, Yığın, Yığıt)Deniz KILINÇ
 
Презентація:Десятковий дріб. Запис десяткових дробів
Презентація:Десятковий дріб. Запис десяткових дробівПрезентація:Десятковий дріб. Запис десяткових дробів
Презентація:Десятковий дріб. Запис десяткових дробівsveta7940
 

What's hot (20)

Insertion and merge sort
Insertion and merge sortInsertion and merge sort
Insertion and merge sort
 
Radix and Shell sort
Radix and Shell sortRadix and Shell sort
Radix and Shell sort
 
Математика. 2 клас. Табличне множення та ділення
Математика. 2 клас. Табличне множення та ділення Математика. 2 клас. Табличне множення та ділення
Математика. 2 клас. Табличне множення та ділення
 
Розв’язування раціональних рівнянь вищих степенів
Розв’язування раціональних рівнянь вищих степенівРозв’язування раціональних рівнянь вищих степенів
Розв’язування раціональних рівнянь вищих степенів
 
Рівняння з параметрами
Рівняння з параметрамиРівняння з параметрами
Рівняння з параметрами
 
17. Java data structures trees representation and traversal
17. Java data structures trees representation and traversal17. Java data structures trees representation and traversal
17. Java data structures trees representation and traversal
 
Quadratic probing
Quadratic probingQuadratic probing
Quadratic probing
 
Лекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмыЛекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмы
 
Lecture # 14 investment alternatives ii
Lecture # 14 investment alternatives iiLecture # 14 investment alternatives ii
Lecture # 14 investment alternatives ii
 
Основы NumPy
Основы NumPyОсновы NumPy
Основы NumPy
 
Yzm 2116 Bölüm 11 - Graph - Çizge
Yzm 2116   Bölüm 11 - Graph - ÇizgeYzm 2116   Bölüm 11 - Graph - Çizge
Yzm 2116 Bölüm 11 - Graph - Çizge
 
множення звичайних дробів
множення звичайних дробівмноження звичайних дробів
множення звичайних дробів
 
Методичний посібник «Правильні многокутники»
Методичний посібник «Правильні многокутники»Методичний посібник «Правильні многокутники»
Методичний посібник «Правильні многокутники»
 
Data Structures - Searching & sorting
Data Structures - Searching & sortingData Structures - Searching & sorting
Data Structures - Searching & sorting
 
Linkedlist
LinkedlistLinkedlist
Linkedlist
 
Системи рівнянь з параметрами
Системи рівнянь з параметрамиСистеми рівнянь з параметрами
Системи рівнянь з параметрами
 
Giới thiệu Đại số quan hệ Phép toán tập hợp Phép chọn Phép chiếu Phép tích Ca...
Giới thiệu Đại số quan hệ Phép toán tập hợp Phép chọn Phép chiếu Phép tích Ca...Giới thiệu Đại số quan hệ Phép toán tập hợp Phép chọn Phép chiếu Phép tích Ca...
Giới thiệu Đại số quan hệ Phép toán tập hợp Phép chọn Phép chiếu Phép tích Ca...
 
Bai de quy
Bai de quyBai de quy
Bai de quy
 
Yzm 2116 - Bölüm 4 (Stack, Yığın, Yığıt)
Yzm 2116 - Bölüm 4 (Stack, Yığın, Yığıt)Yzm 2116 - Bölüm 4 (Stack, Yığın, Yığıt)
Yzm 2116 - Bölüm 4 (Stack, Yığın, Yığıt)
 
Презентація:Десятковий дріб. Запис десяткових дробів
Презентація:Десятковий дріб. Запис десяткових дробівПрезентація:Десятковий дріб. Запис десяткових дробів
Презентація:Десятковий дріб. Запис десяткових дробів
 

Viewers also liked

Лекция №1. Введение. Предмет "Структуры и алгоритмы обработки данных"
Лекция №1. Введение. Предмет "Структуры и алгоритмы обработки данных"Лекция №1. Введение. Предмет "Структуры и алгоритмы обработки данных"
Лекция №1. Введение. Предмет "Структуры и алгоритмы обработки данных"Nikolay Grebenshikov
 
Алгоритмы и структуры данных весна 2014 лекция 1
Алгоритмы и структуры данных весна 2014 лекция 1Алгоритмы и структуры данных весна 2014 лекция 1
Алгоритмы и структуры данных весна 2014 лекция 1Technopark
 
Основные понятия, используемые при моделировании процессов предоставления пуб...
Основные понятия, используемые при моделировании процессов предоставления пуб...Основные понятия, используемые при моделировании процессов предоставления пуб...
Основные понятия, используемые при моделировании процессов предоставления пуб...Нижегородский институт управления
 

Viewers also liked (20)

Оценка сложности алгоритма
Оценка сложности алгоритмаОценка сложности алгоритма
Оценка сложности алгоритма
 
Алгоритмы сжатия данных
Алгоритмы сжатия данныхАлгоритмы сжатия данных
Алгоритмы сжатия данных
 
Введение в алгоритмы и структуры данных
Введение в алгоритмы и структуры данныхВведение в алгоритмы и структуры данных
Введение в алгоритмы и структуры данных
 
Лекция №1. Введение. Предмет "Структуры и алгоритмы обработки данных"
Лекция №1. Введение. Предмет "Структуры и алгоритмы обработки данных"Лекция №1. Введение. Предмет "Структуры и алгоритмы обработки данных"
Лекция №1. Введение. Предмет "Структуры и алгоритмы обработки данных"
 
Алгоритмы и структуры данных весна 2014 лекция 1
Алгоритмы и структуры данных весна 2014 лекция 1Алгоритмы и структуры данных весна 2014 лекция 1
Алгоритмы и структуры данных весна 2014 лекция 1
 
Дивидендная политика
Дивидендная политикаДивидендная политика
Дивидендная политика
 
Программный комплекс «Динамика региона»
Программный комплекс «Динамика региона»Программный комплекс «Динамика региона»
Программный комплекс «Динамика региона»
 
Внешний облик делового человека мужской деловой костюм
Внешний облик делового человека мужской деловой костюмВнешний облик делового человека мужской деловой костюм
Внешний облик делового человека мужской деловой костюм
 
Стратегический план МО
Стратегический план МОСтратегический план МО
Стратегический план МО
 
Цель и задачи финансового менеджмента
Цель и задачи финансового менеджментаЦель и задачи финансового менеджмента
Цель и задачи финансового менеджмента
 
Концепции и модели - основные параметры управления
Концепции и модели - основные параметры управленияКонцепции и модели - основные параметры управления
Концепции и модели - основные параметры управления
 
Статистика банковской и биржевой деятельности
Статистика банковской и биржевой деятельностиСтатистика банковской и биржевой деятельности
Статистика банковской и биржевой деятельности
 
5. Налоговая система
5. Налоговая система5. Налоговая система
5. Налоговая система
 
Основные понятия, используемые при моделировании процессов предоставления пуб...
Основные понятия, используемые при моделировании процессов предоставления пуб...Основные понятия, используемые при моделировании процессов предоставления пуб...
Основные понятия, используемые при моделировании процессов предоставления пуб...
 
Концепции и модели - оценка объектов инвестирования
Концепции и модели - оценка объектов инвестированияКонцепции и модели - оценка объектов инвестирования
Концепции и модели - оценка объектов инвестирования
 
Статистика денежного обращения, цен и инфляции
Статистика денежного обращения, цен и инфляцииСтатистика денежного обращения, цен и инфляции
Статистика денежного обращения, цен и инфляции
 
Статистические показатели отраслей и секторов экономики
Статистические показатели отраслей и секторов экономикиСтатистические показатели отраслей и секторов экономики
Статистические показатели отраслей и секторов экономики
 
Концепции и модели - информационное обеспечение
Концепции и модели - информационное обеспечениеКонцепции и модели - информационное обеспечение
Концепции и модели - информационное обеспечение
 
Статистика страхового и финансового рынков
Статистика страхового и финансового рынковСтатистика страхового и финансового рынков
Статистика страхового и финансового рынков
 
Статистика государственных финансов и налогов
Статистика государственных финансов и налоговСтатистика государственных финансов и налогов
Статистика государственных финансов и налогов
 

Similar to Алгоритмы сортировки

Алгоритмы и структуры данных весна 2014 лекция 3
Алгоритмы и структуры данных весна 2014 лекция 3Алгоритмы и структуры данных весна 2014 лекция 3
Алгоритмы и структуры данных весна 2014 лекция 3Technopark
 
Алгоритмы и структуры данных осень 2013 лекция 3
Алгоритмы и структуры данных осень 2013 лекция 3Алгоритмы и структуры данных осень 2013 лекция 3
Алгоритмы и структуры данных осень 2013 лекция 3Technopark
 
Лекция 2 Сортировки, поиск и порядковые статистики
Лекция 2 Сортировки, поиск и порядковые статистикиЛекция 2 Сортировки, поиск и порядковые статистики
Лекция 2 Сортировки, поиск и порядковые статистикиsimple_people
 
1332519 (1).pptx
1332519 (1).pptx1332519 (1).pptx
1332519 (1).pptxrdes1
 
сортировка
сортировкасортировка
сортировкаaianami
 
Лекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировкиЛекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировкиMikhail Kurnosov
 
Лекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировкиЛекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировкиMikhail Kurnosov
 
Лекция 2. Алгоритмы сортировки
Лекция 2. Алгоритмы сортировкиЛекция 2. Алгоритмы сортировки
Лекция 2. Алгоритмы сортировкиMikhail Kurnosov
 
Алгоритмы сортировки
Алгоритмы сортировкиАлгоритмы сортировки
Алгоритмы сортировкиkogoga
 
Алгоритмы сортировки
Алгоритмы сортировкиАлгоритмы сортировки
Алгоритмы сортировкиkogoga
 
Алгоритмы сортировки
Алгоритмы сортировкиАлгоритмы сортировки
Алгоритмы сортировкиkogoga
 
Алгоритмы сортировки
Алгоритмы сортировкиАлгоритмы сортировки
Алгоритмы сортировкиkogoga
 
Олег Алистратов — Сортировка списков в Perl и Python
Олег Алистратов — Сортировка списков в Perl и PythonОлег Алистратов — Сортировка списков в Perl и Python
Олег Алистратов — Сортировка списков в Perl и PythonYandex
 
Лекция №3. Анализ алгоритмов. Предмет "Структуры и алгоритмы обработки данных"
Лекция №3. Анализ алгоритмов. Предмет "Структуры и алгоритмы обработки данных"Лекция №3. Анализ алгоритмов. Предмет "Структуры и алгоритмы обработки данных"
Лекция №3. Анализ алгоритмов. Предмет "Структуры и алгоритмы обработки данных"Nikolay Grebenshikov
 
02 сортировка и поиск
02 сортировка и поиск02 сортировка и поиск
02 сортировка и поискFedor Tsarev
 
Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки дан...
Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки дан...Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки дан...
Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки дан...Nikolay Grebenshikov
 
Алгоритмы и структуры данных осень 2013 лекция 4
Алгоритмы и структуры данных осень 2013 лекция 4Алгоритмы и структуры данных осень 2013 лекция 4
Алгоритмы и структуры данных осень 2013 лекция 4Technopark
 
Лекция 6. Параллельная сортировка. Алгоритмы комбинаторного поиска. Параллель...
Лекция 6. Параллельная сортировка. Алгоритмы комбинаторного поиска. Параллель...Лекция 6. Параллельная сортировка. Алгоритмы комбинаторного поиска. Параллель...
Лекция 6. Параллельная сортировка. Алгоритмы комбинаторного поиска. Параллель...Alexey Paznikov
 
чернякова г.в.
чернякова г.в.чернякова г.в.
чернякова г.в.sharikdp
 

Similar to Алгоритмы сортировки (20)

Алгоритмы и структуры данных весна 2014 лекция 3
Алгоритмы и структуры данных весна 2014 лекция 3Алгоритмы и структуры данных весна 2014 лекция 3
Алгоритмы и структуры данных весна 2014 лекция 3
 
Алгоритмы и структуры данных осень 2013 лекция 3
Алгоритмы и структуры данных осень 2013 лекция 3Алгоритмы и структуры данных осень 2013 лекция 3
Алгоритмы и структуры данных осень 2013 лекция 3
 
Лекция 2 Сортировки, поиск и порядковые статистики
Лекция 2 Сортировки, поиск и порядковые статистикиЛекция 2 Сортировки, поиск и порядковые статистики
Лекция 2 Сортировки, поиск и порядковые статистики
 
1332519 (1).pptx
1332519 (1).pptx1332519 (1).pptx
1332519 (1).pptx
 
Sort
SortSort
Sort
 
сортировка
сортировкасортировка
сортировка
 
Лекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировкиЛекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировки
 
Лекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировкиЛекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировки
 
Лекция 2. Алгоритмы сортировки
Лекция 2. Алгоритмы сортировкиЛекция 2. Алгоритмы сортировки
Лекция 2. Алгоритмы сортировки
 
Алгоритмы сортировки
Алгоритмы сортировкиАлгоритмы сортировки
Алгоритмы сортировки
 
Алгоритмы сортировки
Алгоритмы сортировкиАлгоритмы сортировки
Алгоритмы сортировки
 
Алгоритмы сортировки
Алгоритмы сортировкиАлгоритмы сортировки
Алгоритмы сортировки
 
Алгоритмы сортировки
Алгоритмы сортировкиАлгоритмы сортировки
Алгоритмы сортировки
 
Олег Алистратов — Сортировка списков в Perl и Python
Олег Алистратов — Сортировка списков в Perl и PythonОлег Алистратов — Сортировка списков в Perl и Python
Олег Алистратов — Сортировка списков в Perl и Python
 
Лекция №3. Анализ алгоритмов. Предмет "Структуры и алгоритмы обработки данных"
Лекция №3. Анализ алгоритмов. Предмет "Структуры и алгоритмы обработки данных"Лекция №3. Анализ алгоритмов. Предмет "Структуры и алгоритмы обработки данных"
Лекция №3. Анализ алгоритмов. Предмет "Структуры и алгоритмы обработки данных"
 
02 сортировка и поиск
02 сортировка и поиск02 сортировка и поиск
02 сортировка и поиск
 
Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки дан...
Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки дан...Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки дан...
Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки дан...
 
Алгоритмы и структуры данных осень 2013 лекция 4
Алгоритмы и структуры данных осень 2013 лекция 4Алгоритмы и структуры данных осень 2013 лекция 4
Алгоритмы и структуры данных осень 2013 лекция 4
 
Лекция 6. Параллельная сортировка. Алгоритмы комбинаторного поиска. Параллель...
Лекция 6. Параллельная сортировка. Алгоритмы комбинаторного поиска. Параллель...Лекция 6. Параллельная сортировка. Алгоритмы комбинаторного поиска. Параллель...
Лекция 6. Параллельная сортировка. Алгоритмы комбинаторного поиска. Параллель...
 
чернякова г.в.
чернякова г.в.чернякова г.в.
чернякова г.в.
 

More from Нижегородский институт управления

Первое Всероссийское тестирование по истории Великой Отечественной войны
Первое Всероссийское тестирование по истории Великой Отечественной войныПервое Всероссийское тестирование по истории Великой Отечественной войны
Первое Всероссийское тестирование по истории Великой Отечественной войныНижегородский институт управления
 
Система национальных счетов и макроэкономических показателей. Платежный баланс
Система национальных счетов и макроэкономических показателей. Платежный балансСистема национальных счетов и макроэкономических показателей. Платежный баланс
Система национальных счетов и макроэкономических показателей. Платежный балансНижегородский институт управления
 

More from Нижегородский институт управления (20)

ФСПОиДП 14 лет
ФСПОиДП 14 летФСПОиДП 14 лет
ФСПОиДП 14 лет
 
Основные направления деятельности_ВШГУ2016
Основные направления деятельности_ВШГУ2016Основные направления деятельности_ВШГУ2016
Основные направления деятельности_ВШГУ2016
 
правила игры
правила игрыправила игры
правила игры
 
Первое Всероссийское тестирование по истории Великой Отечественной войны
Первое Всероссийское тестирование по истории Великой Отечественной войныПервое Всероссийское тестирование по истории Великой Отечественной войны
Первое Всероссийское тестирование по истории Великой Отечественной войны
 
70 лет со дня рождения Надеева Александра Тимофеевича
70 лет со дня рождения Надеева  Александра Тимофеевича70 лет со дня рождения Надеева  Александра Тимофеевича
70 лет со дня рождения Надеева Александра Тимофеевича
 
Статистика уровня жизни населения
Статистика уровня жизни населенияСтатистика уровня жизни населения
Статистика уровня жизни населения
 
Статистика труда и занятости населения
Статистика труда и занятости населенияСтатистика труда и занятости населения
Статистика труда и занятости населения
 
Статистика населения
Статистика  населенияСтатистика  населения
Статистика населения
 
Система национальных счетов и макроэкономических показателей. Платежный баланс
Система национальных счетов и макроэкономических показателей. Платежный балансСистема национальных счетов и макроэкономических показателей. Платежный баланс
Система национальных счетов и макроэкономических показателей. Платежный баланс
 
Статистика национального богатства: основные и оборотные фонды
Статистика национального богатства: основные и оборотные фондыСтатистика национального богатства: основные и оборотные фонды
Статистика национального богатства: основные и оборотные фонды
 
7. Бюджетный федерализм
7. Бюджетный федерализм7. Бюджетный федерализм
7. Бюджетный федерализм
 
6. Общественные расходы
6. Общественные расходы6. Общественные расходы
6. Общественные расходы
 
4.Распределение доходов, эффективность и благосостояние
4.Распределение доходов, эффективность и благосостояние4.Распределение доходов, эффективность и благосостояние
4.Распределение доходов, эффективность и благосостояние
 
Экономические аспекты общественного выбора
Экономические аспекты общественного выбораЭкономические аспекты общественного выбора
Экономические аспекты общественного выбора
 
Общественные блага: свойства и классификация
Общественные блага: свойства и классификацияОбщественные блага: свойства и классификация
Общественные блага: свойства и классификация
 
1.Роль государства в современной смешанной экономике
1.Роль государства в современной  смешанной экономике1.Роль государства в современной  смешанной экономике
1.Роль государства в современной смешанной экономике
 
О Факультете «Высшая школа государственного управления»
О Факультете «Высшая школа государственного управления»О Факультете «Высшая школа государственного управления»
О Факультете «Высшая школа государственного управления»
 
Маркетинг региона как часть территориального маркетинга
Маркетинг региона как часть территориального маркетингаМаркетинг региона как часть территориального маркетинга
Маркетинг региона как часть территориального маркетинга
 
Инновационный маркетинг
Инновационный маркетингИнновационный маркетинг
Инновационный маркетинг
 
Профессиональная этика и этикет на государственной службе
Профессиональная этика и этикет на государственной службеПрофессиональная этика и этикет на государственной службе
Профессиональная этика и этикет на государственной службе
 

Алгоритмы сортировки

  • 1. РОССИЙСКАЯ АКАДЕМИЯ НАРОДНОГО ХОЗЯЙСТВА И ГОСУДАРСТВЕННОЙ СЛУЖБЫ ПРИ ПРЕЗИДЕНТЕ РОССИЙСКОЙ ФЕДЕРАЦИИ Нижегородский институт управления Кафедра информатики и информационных технологий Введение в алгоритмы и структуры данных Ивина Наталья Львовна доцент кафедры Информатики и ИТ
  • 2. Тема 3. Алгоритмы сортировки Общие понятия. Цель сортировки. Внутренняя и внешняя сортировки. Сортировка методом прямого обмена (сортировка методом пузырька). Шейкерная сортировка. Сортировка методом прямого выбора. Сортировка методом прямого включения. Сортировка методом Шелла. Быстрая сортировка. Сортировка слиянием упорядоченных массивов. 2
  • 3. Введение Сортировка - процесс упорядочения множества подобных информационных объектов в порядке возрастания или убывания их значений. Цель сортировки - упорядочивание данных для облегчения последующего поиска элементов в отсортированном множестве. 3
  • 4. Характеристики алгоритмов сортировки: • Устойчивость – изменение относительного положения равных элементов (метод сортировки устойчивый, если при его применении не изменяется относительное положение записей с равными значениями ключа) • Естественность поведения – улучшение работы алгоритма при улучшении (частичной или полной сортировке) входных данных • Сравнения - количество операций сравнения элементов • Перестановки - количество перестановок элементов 4
  • 5. Виды сортировки: • внутренняя сортировка - сортировка массивов записей, целиком расположенных в оперативной памяти; • внешняя сортировка - сортировка файлов, хранящихся во внешней памяти и не помещающихся полностью в оперативной памяти. 5
  • 6. Методы внутренней сортировки: • Вставка • Обмен • Выбор • Распределение • Слияние 6
  • 7. Оценка алгоритмов сортировки: • С какой средней скоростью алгоритм сортирует информацию? • Какова скорость для лучшего случая и для худшего случая? • Поведение алгоритма является естественным или является не естественным? • Выполняется ли перестановка элементов для одинаковых ключей? 7
  • 8. Сортировка методом прямого обмена (сортировка методом пузырька) Нулевой проход сортировки, сравниваемые пары выделены. 8
  • 9. Сортировка методом прямого обмена (сортировка методом пузырька) Состояние массива в начале каждого прохода. 9
  • 10. Сортировка методом прямого обмена (сортировка методом пузырька) Оценка сложности n - число сортируемых элементов массива внешний цикл выполняется (n-1) раз; внутренний цикл выполняется n/2 раз Число операций сравнения: (n2-n)/2 - ВСЕГДА! Число операций обмена: наилучший случай - 0, средний случай - 3/4 (n2-n), наихудший случай - 3/2 (n2-n) Сложность: О(n2) 10
  • 11. Шейкерная (челночная) сортировка Улучшенная версия сортировки пузырьковым методом Состояние массива в начале каждого прохода. 11
  • 12. Число сравнений не изменяется - (n2-n)/2, число обменов уменьшается лишь на незначительную величину. Сложность О(n2) Шейкерная (челночная) сортировка. Оценка сложности 12
  • 13. Сортировка методом прямого выбора На i-м шаге выбираем наименьший из элементов a[i] ... a[n] и меняем его местами с a[i]. Последовательность шагов при n=5: Вне зависимости от номера текущего шага i, последовательность a[0]...a[i] (выделена курсивом) является упорядоченной. 13
  • 14. Сортировка методом прямого выбора. Оценка сложности Алгоритм делает n-1 итераций, на каждой из которых осуществляется еще n-i проходов (сравнений) и одна перестановка. Внешний цикл выполняется (n-1) раз, внутренний цикл выполняется n/2 раз. Число сравнений: 1/2 (n2-n) Число операций обмена : лучший случай - 3(n-1), худший случай - n2/4+3(n-1) средний - n(ln n+ y), y ~ 0,577216 Общее количество операций : n + (n-1 + 1) + (n-2 + 1) + ... + 2 = 1/2*(n2 + 2*n) - 1. Сложность ~ O(n2). 14
  • 15. Сортировка методом прямого включения Рассмотрим действия алгоритма на i-м шаге. Последовательность к этому моменту разделена на две части: готовую a[0]...a[i] и неупорядоченную a[i+1]...a[n]. На следующем, (i+1)-м каждом шаге алгоритма берем a[i+1] и вставляем на нужное место в готовую часть массива. Вставка элемента a[4] = 3 в упорядоченную подпоследовательность a[0]…a[3]. Сравниваемые пары выделены. 15
  • 16. Сортировка вставками со сторожевым элементом Алгоритм прямого включения можно слегка улучшить. На каждом шаге внутреннего цикла проверяются 2 условия. Можно объединить их в одно, поставив в начало массива специальный сторожевой элемент. Он должен быть заведомо меньше всех остальных элементов массива. Тогда при j=0 будет заведомо верно a[0] <= x. Цикл остановится на нулевом элементе, что и было целью условия j>=0. 16
  • 17. Сортировка вставками со сторожевым элементом Однако, отсортированный массив будет не полон, так как из него исчезло первое число. Для окончания сортировки это число следует вернуть назад, а затем вставить в отсортированную последовательность a[1]...a[n]. 17
  • 18. Сортировка методом прямого включения. Оценка сложности Число операций сравнения зависит от исходной упорядоченности массива элементов: упорядоченный массив = (n-1), упорядоченный в обратном порядке = 1/2(n2+n)-1, среднее значение = 1/4 (n2+n-2). Число операций обмена : лучший случай = 2 (n-1), средний случай = 1/4 (n2+9n-10), худший случай = 1/2 (n2+3n-4). Cреднее, а также худшее число сравнений и перестановок оцениваются как O(n2) 18
  • 19. Сортировка методом Шелла Сначала сравниваются и сортируются между собой ключи, отстоящие один от другого на некотором расстоянии d. После этого процедура повторяется для некоторых меньших значений d, а завершается сортировка Шелла упорядочиванием элементов при d = 1 (обычной сортировкой вставками или простыми обменами). 19
  • 20. Сортировка методом Шелла 32 95 16 82 24 66 35 19 75 54 40 43 93 68 На первом шаге сортируются подсписки A, составленные из всех элементов A, различающихся на 5 позиций, то есть подсписки: A5,1 = (32,66,40), A5,2 = (95,35,43), A5,3 = (16,19,93), A5,4 = (82,75,68), A5,5 = (24,54). 20
  • 21. Сортировка методом Шелла Очевидно, лишь последняя сортировка необходима, чтобы расположить все элементы по своим местам. Так зачем нужны остальные ? Они продвигают элементы максимально близко к соответствующим позициям, так что в последней стадии число перемещений будет весьма невелико. Последовательность и так почти отсортирована. 21
  • 22. Сортировка методом Шелла. Выбор приращения Приращение - расстояние между сортируемыми элементами, в зависимости от прохода. В конце приращение всегда равно 1. Последовательность приращений определяет рост эффективности. Первоначально используемая Шеллом последовательность длин промежутков: d1 = N/2, di = di – 1 /2, dk = 1 Сложность алгоритма О(сN2) в худшем случае. 22
  • 23. Формула Седжвика: Сортировка методом Шелла. Выбор приращения 9*2s – 9*2s/2 + 1, если s четно inc [s] = 8*2s – 6*2(s + 1)/2 + 1, если s нечетно inc[0] = 1, inc[1] = 5, ... Следует остановиться на значении inc[s-1], если 3*inc[s] > size. Среднее количество операций: O(n7/6), в худшем случае - порядка O(n4/3). 23
  • 24. Быстрая сортировка -cортировка разделением (Quicksort) -алгоритм разработанный английским информатиком Чарльзом Хоаром -используется в стандартных утилитах сортировки -основан на использовании обменного метода сортировки 24
  • 25. Быстрая сортировка Метод основан на подходе "разделяй-и-властвуй": 1. из массива выбрать элемент, называемый опорным, a [i]; 2. сравнить все остальные элементы с опорным, на основании сравнения разбить множество на три - «меньшие опорного», «равные» и «большие», расположить их в порядке меньшие- равные-большие; ≤ a [i] a [i] ≥ a [i] 3. для обоих подмассивов: если в подмассиве более двух элементов, рекурсивно запускаем для него ту же процедуру. В конце получится полностью отсортированная последовательность. 25
  • 26. Быстрая сортировка. Пример На входе массив a[0]...a[N] и опорный элемент p, по которому будет производиться разделение. 1. Введем два указателя: i и j. В начале алгоритма они указывают, соответственно, на левый и правый конец последовательности. 2. Будем двигать указатель i с шагом в 1 элемент по направлению к концу массива, пока не будет найден элемент a[i] >= p. Затем аналогичным образом начнем двигать указатель j от конца массива к началу, пока не будет найден a[j] <= p. 3. Далее, если i <= j, меняем a[i] и a[j] местами и продолжаем двигать i,j по тем же правилам. Повторяем шаги 2-3, пока i <= j. 26
  • 27. Быстрая сортировка. Пример Рассмотрим работу процедуры для массива a[0]...a[6] и опорного элемента p = a[3]. 27
  • 28. Быстрая сортировка. Свойства алгоритма Общее быстродействие: O(n log n). Метод неустойчив. O(n2) операций, если каждый раз в качестве центрального элемента выбирается максимум или минимум входной последовательности. Сортировка использует дополнительную память, так как приблизительная глубина рекурсии составляет O(log n), а данные о рекурсивных подвызовах каждый раз добавляются в стек. 28
  • 29. Сортировка слиянием упорядоченных массивов. Джон фон Нейман 1945 год. Для решения задачи сортировки выполняются три этапа: 1. Сортируемый массив разбивается на две части примерно одинакового размера; 2. Каждая из получившихся частей сортируется отдельно, например - тем же самым алгоритмом; 3. Два упорядоченных массива половинного размера соединяются в один. 29
  • 30. Сортировка слиянием упорядоченных массивов. Cоединение двух упорядоченных массивов в один. Пусть мы имеем два подмассива. Пусть также, элементы подмассивов в каждом из этих подмассивов отсортированы по возрастанию. Тогда: 1.Слияние двух подмассивов в третий результирующий массив. На каждом шаге мы берём меньший из двух первых элементов подмассивов и записываем его в результирующий массив. Счетчики номеров элементов результирующего массива и подмассива из которого был взят элемент увеличиваем на 1. 2."Прицепление" остатка. Когда один из подмассивов закончился, мы добавляем все оставшиеся элементы второго подмассива в результирующий массив. 30
  • 31. Приведем пример реализации алгоритма слияния двух упорядоченных массивов в один. На входе алгоритм получает два отсортированных массива, которые задаются своим размером и элементами типа int. На выходе алгоритм выводит упорядоченный массив, состоящий из всех элементов двух исходных. Сортировка слиянием упорядоченных массивов. 31
  • 32. Сортировка слиянием упорядоченных массивов. Оценка сложности данного метода. Число сравнений ключей и число пересылок оценивается как O(n*log n) Для сортировки массива размера n требуется 2*n элементов памяти. 32
  • 33. Сравнение методов внутренней сортировки Min Avg Max Прямое включение C = n-1 M = 2x(n-1) (n2 + n - 2)/4 (n2 - 9n - 10)/4 (n2 -n)/2 - 1 (n2 -3n - 4)/2 Прямой выбор C = (n2 - n)/2 M = 3x(n-1) (n2 - n)/2 nx(ln n + 0.57) (n2 - n)/2 n2/4 + 3x(n-1) Прямой обмен C = (n2 - n)/2 M = 0 (n2 - n)/2 (n2 - n)x0.75 (n2 - n)/2 (n2 - n)x1.5 Для сортировки методом Шелла порядок C и M есть O(n1.2), для сортировки со слиянием - O(n*log n). 33
  • 34. Сравнение времени сортировок сортировка пузырьком; шейкер-сортировка; сортировка выбором; сортировка вставками; сортировка вставками со сторожевым элементом; сортировка Шелла. 34