Что такое findslide.org?

FindSlide.org - это сайт презентаций, докладов, шаблонов в формате PowerPoint.


Для правообладателей

Обратная связь

Email: Нажмите что бы посмотреть 

Яндекс.Метрика

Презентация на тему Методы сортировки данных

Содержание

Сортировка объектов – расположение объектов по возрастанию или убыванию согласно определенному линейному отношению порядка
Методы сортировки  данныхМолчан Олег Николаевич, преподаватель спец. дисциплин дисциплина «Основы алгоритмизации и программирования 2 курс Сортировка объектов – расположение объектов по возрастанию или убыванию согласно определенному линейному отношению порядка Сортировка объектов:ВнутренняяВнешняя Внутренняя сортировка оперирует с массивами, целиком помещающимися в оперативной памяти с произвольным Алгоритм сортировки вставкой Суть сортировки: Упорядочиваются два элемента массиваВставка третьего элемента в соответствующее место по Сортировка вставкой1362108136821368813131066 8 Пусть нужно отсортировать массив А по возрастанию, в котором N элементов методом Начало алгоритма.Шаг 1 j:=2,Шаг 2 Пока j=2 и f=0 выполнять:		Шаг 2.2.1 Если Начало алгоритма.Шаг 1 j:=2,Шаг 2 Пока j=2 и f=0 выполнять:		Шаг 2.2.1 Если Начало алгоритма.Шаг 1 j:=2,Шаг 2 Пока j=2 и f=0 выполнять:		Шаг 2.2.1 Если Начало алгоритма.Шаг 1 j:=2,Шаг 2 Пока j=2 и f=0 выполнять:		Шаг 2.2.1 Если Начало алгоритма.Шаг 1 j:=2,Шаг 2 Пока j=2 и f=0 выполнять:		Шаг 2.2.1 Если Начало алгоритма.Шаг 1 j:=2,Шаг 2 Пока j=2 и f=0 выполнять:		Шаг 2.2.1 Если Начало алгоритма.Шаг 1 j:=2,Шаг 2 Пока j=2 и f=0 выполнять:		Шаг 2.2.1 Если Алгоритм сортировки выбором Суть сортировки:Выбирается элемент с наименьшим значением и делается его обмен с первым 1362108Сортировка выборомMin2Min6Min813Min1013Отсортиро-ванная частьОтсортированная частьОтсортированная частьМассив отсортирован по возрастаниюпо возрастанию Постановка задачиПусть нужно отсортировать массив А по возрастанию, в котором N элементов Начало алгоритма.Шаг 1 j:=1,Шаг 2 Пока j Начало алгоритма.Шаг 1 j:=1,Шаг 2 Пока j Начало алгоритма.Шаг 1 j:=1,Шаг 2 Пока j Алгоритм сортировки обменом («пузырьковая») Суть сортировки:Последовательно просматривается массив и сравнивается каждая пара элементов между собой. При Сортировка обменом1362108Первый просмотр6138131321013Второй просмотр6828Третий просмотр626Четвертый просмотр26 Пусть нужно отсортировать массив А по возрастанию, в котором N элементов методом Начало алгоритма.Шаг 1 j:=N,Шаг 2 Пока j>=2 выполнять:	Шаг 2.1 i:=1; ,	Шаг 2.2 Начало алгоритма.Шаг 1 j:=N,Шаг 2 Пока j>=2 выполнять:	Шаг 2.1 i:=1; ,	Шаг 2.2 Начало алгоритма.Шаг 1 j:=N,Шаг 2 Пока j>=2 выполнять:	Шаг 2.1 i:=1; ,	Шаг 2.2 Алгоритм сортировки Шелла Классифицируется как «слияние вставкой»;Называется «сортировкой с убывающим шагом»Общий метод, который использует сортировку Условия реализации:Конкретная последовательность шагов может быть другой, но последний шаг должен быть Суть сортировки:Сначала сортируются все элементы, отстоящие друг от друга на три позиции 12Сортировка Шелла814641234121 шаг. 4 группы из 2-х элементов1734124899114762 шаг. 2 группы из 4-х элементов1212121241684 Сортировка Шелла4163 шаг. 1 группа из 8-ми элементовМассив отсортирован по возрастаниюпо возрастанию121498714641 Пусть нужно отсортировать массив А по возрастанию, в котором N элементов методом Начало алгоритма.Шаг 1. M=целая часть N/2Шаг 2. Пока M0 выполнять Шаг 2.1. Начало алгоритма.Шаг 1. M=целая часть N/2Шаг 2. Пока M0 выполнять Шаг 2.1. Зачем необходимо это действие?Начало алгоритма.Шаг 1. M=целая часть N/2Шаг 2. Пока M0 Зачем необходимо это действие?Начало алгоритма.Шаг 1. M=целая часть N/2Шаг 2. Пока M0 Почему условие выхода из цикла такое?Начало алгоритма.Шаг 1. M=целая часть N/2Шаг 2. Алгоритм быстрой сортировки Придумана Ч.А.Р. Хоаром (Charles Antony Richard Hoare);В основе – сортировка обменами;Основана на делении массива Суть сортировки:Выбирается некоторое значение (x)- барьерный элемент, который определяется округлением до целого Суть сортировки: Меняем найденные элементы местами. В случае, если не найден наибольший Быстрая сортировка812371911416Барьерный элемент43781234Барьерный элемент8121119Барьерный элемент121916198>7 переносим в правую часть, т. к. 16>7 Пусть нужно отсортировать массив А по возрастанию, в котором n элементов быстрым Начало алгоритма.Шаг 1 i=m j=tШаг 2 x=A[округление до целого(m+t)/2]Шаг 3 Пока i Начало алгоритма.Шаг 1 i=m j=tШаг 2 x=A[округление до целого(m+t)/2]Шаг 3 Пока i Начало алгоритма.Шаг 1 i=m j=tШаг 2 x=A[округление до целого(m+t)/2]Шаг 3 Пока i Начало алгоритма.Шаг 1 i=m j=tШаг 2 x=A[округление до целого(m+t)/2]Шаг 3 Пока i Начало алгоритма.Шаг 1 i=m j=tШаг 2 x=A[округление до целого(m+t)/2]Шаг 3 Пока i Начало алгоритма.Шаг 1 i=m j=tШаг 2 x=A[округление до целого(m+t)/2]Шаг 3 Пока i Начало алгоритма.Шаг 1 i=m j=tШаг 2 x=A[округление до целого(m+t)/2]Шаг 3 Пока i Основывается:количестве необходимых сравнений количестве пересылокОценка эффективности Параметры оценки алгоритмов Время сортировки - основной параметр, характеризующий быстродействие алгоритма Устойчивость – отсортированный массив не меняет порядок элементов с одинаковыми значениями.Взаимное расположение Естественность поведения - эффективность метода при обработке уже отсортированных, или частично Оценка алгоритма сортировки выбором Общее количество сравнений   C =N-l + Устойчив ли этот метод?Не устойчив Если входная последовательность почти упорядочена, то сравнений будет столько жеалгоритм ведет  себя неестественно Оценка алгоритма сортировки вставкой Для массива 1 2 3 4 5 6 Устойчив ли этот метод?Устойчивпорядок элементов с одинаковыми ключами не изменяется Наименьшие оценки эффективности, когда элементы предварительно упорядочены, а наибольшие – когда элементы Не эффективный метод, так как включение элемента связано со сдвигом всех предшествующих Оценка алгоритма сортировки обменом Количество сравнений (n2-n)/2Общее количество операцийTheta(n2) Ответьте на следующие вопросы:Устойчив ли этот метод?Естественное ли поведение этого алгоритма? Очень медленен и малоэффективен. На практике, даже с улучшениями, работает, слишком медленно, Сравнение методов простой сортировкиN – количество элементов, M – кол-во пересылок, C Выбор метода сортировкиПри сортировке маленьких массивов (менее 100 элементов) лучше использовать метод Оценка алгоритма Шелла Время выполнения пропорционально n1.2, т. к. при каждом проходе Оценка алгоритма быстрой сортировки Если размер массива равен числу, являющемуся степенью двойки Общее количество операций Theta(n). Количество шагов деления (глубина рекурсии) составляет приблизительно log Метод неустойчив. Поведение довольно естественно, если учесть, что при частичной упорядоченности повышаются Итоги:Предпочтительным является метод прямого включения;Сортировка методом простого обмена является наихудшей;Быстрая сортировка превосходит все остальные методы сортировки; Контрольные вопросыЧто такое «сортировка»?В чем заключается метод сортировки отбором?В чем заключается метод Контрольные вопросыКакой алгоритм сортировки считается самым простым?Какой алгоритм сортировки считается самым эффективным?Сколько
Слайды презентации

Слайд 2 Сортировка объектов – расположение объектов по возрастанию или

Сортировка объектов – расположение объектов по возрастанию или убыванию согласно определенному линейному отношению порядка

убыванию согласно определенному линейному отношению порядка


Слайд 3 Сортировка объектов:

Внутренняя
Внешняя

Сортировка объектов:ВнутренняяВнешняя

Слайд 4 Внутренняя сортировка оперирует с массивами, целиком помещающимися в

Внутренняя сортировка оперирует с массивами, целиком помещающимися в оперативной памяти с

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

Данные

обычно сортируются на том же месте, без дополнительных затрат


Слайд 6 Алгоритм сортировки вставкой

Алгоритм сортировки вставкой

Слайд 7 Суть сортировки:

Упорядочиваются два элемента массива

Вставка третьего элемента

Суть сортировки: Упорядочиваются два элемента массиваВставка третьего элемента в соответствующее место

в соответствующее место по отношению к первым двум элементам.


Этот процесс повторяется до тех пор, пока все элементы не будут упорядочены.

Слайд 8 Сортировка вставкой
13
6
2
10
8
13
6
8
2
13
6
8
8
13
13
10
66 8

Сортировка вставкой1362108136821368813131066 8

возрастанию






Слайд 9 Пусть нужно отсортировать массив А по возрастанию, в

Пусть нужно отсортировать массив А по возрастанию, в котором N элементов

котором N элементов методом вставки
Вспомогательные переменные
j – номер первого

элемента остатка.
i – номер перемещаемого элемента.
f – условие выхода из цикла (если f=1, то выход)
Val – промежуточное значение, используемое для перемещения элементов массив

Постановка задачи


Слайд 10 Начало алгоритма.
Шаг 1 j:=2,
Шаг 2 Пока j

Начало алгоритма.Шаг 1 j:=2,Шаг 2 Пока j=2 и f=0 выполнять:		Шаг 2.2.1

2.1 i:=j; f:=0,
Шаг 2.2 Пока i>=2 и f=0 выполнять:
Шаг

2.2.1 Если A[i-1]>A[i]
то Val:=A[i-1];
A[i-1]:=A[i];
A[i]:=Val,
иначе f:=1,
Шаг 2.2.2 i:=i-1,
Шаг 2.3 j:=j+1.
Конец алгоритма.

Слайд 11 Начало алгоритма.
Шаг 1 j:=2,
Шаг 2 Пока j

Начало алгоритма.Шаг 1 j:=2,Шаг 2 Пока j=2 и f=0 выполнять:		Шаг 2.2.1

2.1 i:=j; f:=0,
Шаг 2.2 Пока i>=2 и f=0 выполнять:
Шаг

2.2.1 Если A[i-1]>A[i]
то Val:=A[i-1];
A[i-1]:=A[i];
A[i]:=Val,
иначе f:=1,
Шаг 2.2.2 i:=i-1,
Шаг 2.3 j:=j+1.
Конец алгоритма.

Что обозначает данное условие?



Слайд 12 Начало алгоритма.
Шаг 1 j:=2,
Шаг 2 Пока j

Начало алгоритма.Шаг 1 j:=2,Шаг 2 Пока j=2 и f=0 выполнять:		Шаг 2.2.1

2.1 i:=j; f:=0,
Шаг 2.2 Пока i>=2 и f=0 выполнять:
Шаг

2.2.1 Если A[i-1]>A[i]
то Val:=A[i-1];
A[i-1]:=A[i];
A[i]:=Val,
иначе f:=1,
Шаг 2.2.2 i:=i-1,
Шаг 2.3 j:=j+1.
Конец алгоритма.

Почему стартовое значение j =2 ?



Слайд 13 Начало алгоритма.
Шаг 1 j:=2,
Шаг 2 Пока j

Начало алгоритма.Шаг 1 j:=2,Шаг 2 Пока j=2 и f=0 выполнять:		Шаг 2.2.1

2.1 i:=j; f:=0,
Шаг 2.2 Пока i>=2 и f=0 выполнять:
Шаг

2.2.1 Если A[i-1]>A[i]
то Val:=A[i-1];
A[i-1]:=A[i];
A[i]:=Val,
иначе f:=1,
Шаг 2.2.2 i:=i-1,
Шаг 2.3 j:=j+1.
Конец алгоритма.

Почему стартовое значение i =2 ?



Слайд 14 Начало алгоритма.
Шаг 1 j:=2,
Шаг 2 Пока j

Начало алгоритма.Шаг 1 j:=2,Шаг 2 Пока j=2 и f=0 выполнять:		Шаг 2.2.1

2.1 i:=j; f:=0,
Шаг 2.2 Пока i>=2 и f=0 выполнять:
Шаг

2.2.1 Если A[i-1]>A[i]
то Val:=A[i-1];
A[i-1]:=A[i];
A[i]:=Val,
иначе f:=1,
Шаг 2.2.2 i:=i-1,
Шаг 2.3 j:=j+1.
Конец алгоритма.

Всегда ли происходит обмен входного j элемента
с отсортированным элементом ?



Слайд 15 Начало алгоритма.
Шаг 1 j:=2,
Шаг 2 Пока j

Начало алгоритма.Шаг 1 j:=2,Шаг 2 Пока j=2 и f=0 выполнять:		Шаг 2.2.1

2.1 i:=j; f:=0,
Шаг 2.2 Пока i>=2 и f=0 выполнять:
Шаг

2.2.1 Если A[i-1]>A[i]
то Val:=A[i-1];
A[i-1]:=A[i];
A[i]:=Val,
иначе f:=1,
Шаг 2.2.2 i:=i-1,
Шаг 2.3 j:=j+1.
Конец алгоритма.

Возможно ли заменить цикл ПОКА и ЕСЛИ
одним циклом ПОКА с условием i>=2 и A[i-1]>A[i] ?


Слайд 16 Начало алгоритма.
Шаг 1 j:=2,
Шаг 2 Пока j

Начало алгоритма.Шаг 1 j:=2,Шаг 2 Пока j=2 и f=0 выполнять:		Шаг 2.2.1

2.1 i:=j; f:=0,
Шаг 2.2 Пока i>=2 и f=0 выполнять:
Шаг

2.2.1 Если A[i-1]>A[i]
то Val:=A[i-1];
A[i-1]:=A[i];
A[i]:=Val,
иначе f:=1,
Шаг 2.2.2 i:=i-1,
Шаг 2.3 j:=j+1.
Конец алгоритма.

Для чего нужен этот оператор?



Слайд 17 Алгоритм сортировки выбором

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

Слайд 18 Суть сортировки:
Выбирается элемент с наименьшим значением и делается

Суть сортировки:Выбирается элемент с наименьшим значением и делается его обмен с

его обмен с первым элементом массива.
Затем находится элемент

с наименьшим значением из оставшихся n-1 элементов и делается его обмен со вторым элементом и т.д. до обмена двух последних элементов.

Слайд 19 13
6
2
10
8
Сортировка выбором
Min
2
Min
6
Min
8
13
Min
10
13
Отсортиро-ванная часть
Отсортированная часть
Отсортированная часть
Массив отсортирован по возрастанию
по

1362108Сортировка выборомMin2Min6Min813Min1013Отсортиро-ванная частьОтсортированная частьОтсортированная частьМассив отсортирован по возрастаниюпо возрастанию

возрастанию


Слайд 20 Постановка задачи
Пусть нужно отсортировать массив А по возрастанию,

Постановка задачиПусть нужно отсортировать массив А по возрастанию, в котором N

в котором N элементов методом выбора.

Вспомогательные переменные
j –

номер первого элемента остатка.
i – номер перемещаемого элемента.
min – минимальное число в массиве.
Imin – номер минимального числа в массиве

Слайд 21 Начало алгоритма.
Шаг 1 j:=1,
Шаг 2 Пока j

Начало алгоритма.Шаг 1 j:=1,Шаг 2 Пока j

Шаг 2.1 min:=a[j], Imin:=j, i:=j+1
Шаг 2.2

Пока i<=N выполнять:
Шаг 2.2.1 Если A[i] то min:=a[i], Imin:=i
Шаг 2.2.2 i:=i+1,
Шаг 2.3 A[Imin]:=A[j], A[j]:=min
Шаг 2.4 j:=j+1.
Конец алгоритма.

Слайд 22 Начало алгоритма.
Шаг 1 j:=1,
Шаг 2 Пока j

Начало алгоритма.Шаг 1 j:=1,Шаг 2 Пока j

Шаг 2.1 min:=a[j], Imin:=j, i:=j+1
Шаг 2.2

Пока i<=N выполнять:
Шаг 2.2.1 Если A[i] то min:=a[i], Imin:=i
Шаг 2.2.2 i:=i+1,
Шаг 2.3 A[Imin]:=A[j], A[j]:=min
Шаг 2.4 j:=j+1.
Конец алгоритма.

Что происходит в выделенном фрагменте?



Слайд 23 Начало алгоритма.
Шаг 1 j:=1,
Шаг 2 Пока j

Начало алгоритма.Шаг 1 j:=1,Шаг 2 Пока j

Шаг 2.1 min:=a[j], Imin:=j, i:=j+1
Шаг 2.2

Пока i<=N выполнять:
Шаг 2.2.1 Если A[i] то min:=a[i], Imin:=i
Шаг 2.2.2 i:=i+1,
Шаг 2.3 A[Imin]:=A[j], A[j]:=min
Шаг 2.4 j:=j+1.
Конец алгоритма.

Что происходит в выделенном фрагменте?




Слайд 24 Алгоритм сортировки обменом («пузырьковая»)

Алгоритм сортировки обменом («пузырьковая»)

Слайд 25
Суть сортировки:
Последовательно просматривается массив и сравнивается каждая пара

Суть сортировки:Последовательно просматривается массив и сравнивается каждая пара элементов между собой.

элементов между собой.
При этом "неправильное" расположение элементов устраняется

путем их перестановки.
Процесс просмотра и сравнения элементов повторяется до просмотра всего массива.

















Слайд 26 Сортировка обменом
13
6
2
10
8
Первый просмотр
6
13
8
13
13
2
10
13
Второй просмотр
6
8
2
8
Третий просмотр
6
2
6
Четвертый просмотр
2
6

Сортировка обменом1362108Первый просмотр6138131321013Второй просмотр6828Третий просмотр626Четвертый просмотр26

часть
Массив отсортирован по возрастанию
62
82
62
по возрастанию









Слайд 27 Пусть нужно отсортировать массив А по возрастанию, в

Пусть нужно отсортировать массив А по возрастанию, в котором N элементов

котором N элементов методом обмена

Вспомогательные переменные
j – номер первого

элемента остатка.
i – номер перемещаемого элемента.
Val – промежуточное значение, используемое для перемещения элементов массива

Постановка задачи


Слайд 28 Начало алгоритма.
Шаг 1 j:=N,
Шаг 2 Пока j>=2 выполнять:
Шаг

Начало алгоритма.Шаг 1 j:=N,Шаг 2 Пока j>=2 выполнять:	Шаг 2.1 i:=1; ,	Шаг

2.1 i:=1; ,
Шаг 2.2 Пока iA[i+1]

то Val:=A[i];
A[i]:=A[i+1];
A[i+1]:=Val,
Шаг 2.2.2 i=i+1,
Шаг 2.3 j:=j-1.
Конец алгоритма.

Сравнение соседних элементов

Обмен соседних элементов местами, в случае если левый больше правого

Формируется отсортированная часть


Слайд 29 Начало алгоритма.
Шаг 1 j:=N,
Шаг 2 Пока j>=2 выполнять:
Шаг

Начало алгоритма.Шаг 1 j:=N,Шаг 2 Пока j>=2 выполнять:	Шаг 2.1 i:=1; ,	Шаг

2.1 i:=1; ,
Шаг 2.2 Пока iA[i+1]

то Val:=A[i];
A[i]:=A[i+1];
A[i+1]:=Val,
Шаг 2.2.2 i=i+1,
Шаг 2.3 j:=j-1.
Конец алгоритма.

Почему условие такое?



Слайд 30 Начало алгоритма.
Шаг 1 j:=N,
Шаг 2 Пока j>=2 выполнять:
Шаг

Начало алгоритма.Шаг 1 j:=N,Шаг 2 Пока j>=2 выполнять:	Шаг 2.1 i:=1; ,	Шаг

2.1 i:=1; ,
Шаг 2.2 Пока iA[i+1]

то Val:=A[i];
A[i]:=A[i+1];
A[i+1]:=Val,
Шаг 2.2.2 i=i+1,
Шаг 2.3 j:=j-1.
Конец алгоритма.

Почему значение j уменьшается?
Можно ли увеличивать? Что нужно изменить?



Слайд 31 Алгоритм сортировки Шелла

Алгоритм сортировки Шелла

Слайд 32 Классифицируется как «слияние вставкой»;

Называется «сортировкой с убывающим шагом»

Общий

Классифицируется как «слияние вставкой»;Называется «сортировкой с убывающим шагом»Общий метод, который использует

метод, который использует сортировку вставкой, применяет принцип уменьшения расстояния

между сравниваемыми элементами


Слайд 33 Условия реализации:

Конкретная последовательность шагов может быть другой, но

Условия реализации:Конкретная последовательность шагов может быть другой, но последний шаг должен

последний шаг должен быть равен 1;

Следует избегать последовательность, которые

являются степенями 2 (т.е. нельзя использовать последовательность шагов – 4,2)

?

?


Слайд 34 Суть сортировки:
Сначала сортируются все элементы, отстоящие друг от

Суть сортировки:Сначала сортируются все элементы, отстоящие друг от друга на три

друга на три позиции
Затем сортируются элементы, расположенные на

расстоянии двух позиций
Наконец, сортируются все соседние элементы

Слайд 35 12
Сортировка Шелла
8
14
6
4
1
2
3
4
1
2
1 шаг. 4 группы из 2-х элементов



1
7
3
4

12
4
8
9
9
1
14
7
6
2

12Сортировка Шелла814641234121 шаг. 4 группы из 2-х элементов1734124899114762 шаг. 2 группы из 4-х элементов1212121241684

шаг. 2 группы из 4-х элементов
1
2
1
2
1
2
1
2
4
1
6
8
4


Слайд 36 Сортировка Шелла
4
1
6
3 шаг. 1 группа из 8-ми элементов
Массив

Сортировка Шелла4163 шаг. 1 группа из 8-ми элементовМассив отсортирован по возрастаниюпо возрастанию121498714641

отсортирован по возрастанию
по возрастанию
12
14
9
8
7

14
6
4
1


Слайд 37 Пусть нужно отсортировать массив А по возрастанию, в

Пусть нужно отсортировать массив А по возрастанию, в котором N элементов

котором N элементов методом Шелла

Вспомогательные переменные
j – номер первого

элемента остатка.
i – номер перемещаемого элемента.
M- оптимальный шаг
P– промежуточное значение, используемое для перемещения элементов массива

Постановка задачи


Слайд 38 Начало алгоритма.
Шаг 1. M=целая часть N/2
Шаг 2. Пока

Начало алгоритма.Шаг 1. M=целая часть N/2Шаг 2. Пока M0 выполнять Шаг

M0 выполнять
Шаг 2.1. i:=M+1
Шаг 2.2. Пока i

выполнять
Шаг 2.2.1. P=A[i]
Шаг 2.2.2. j=i-M
Шаг 2.2.3. Пока j>0 и P Шаг 2.2.3.1 A[j+M]=A[j] Шаг 2.2.3.2 j=j-M
Шаг 2.2.4. A[j+M]=P
Шаг 2.2.5. i=i+1
Шаг 2.3. M=целая часть M/2
Конец алгоритма.

Слайд 39 Начало алгоритма.
Шаг 1. M=целая часть N/2
Шаг 2. Пока

Начало алгоритма.Шаг 1. M=целая часть N/2Шаг 2. Пока M0 выполнять Шаг

M0 выполнять
Шаг 2.1. i:=M+1
Шаг 2.2. Пока i

выполнять
Шаг 2.2.1. P=A[i]
Шаг 2.2.2. j=i-M
Шаг 2.2.3. Пока j>0 и P Шаг 2.2.3.1 A[j+M]=A[j] Шаг 2.2.3.2 j=j-M
Шаг 2.2.4. A[j]=P
Шаг 2.2.5. i=i+1
Шаг 2.3. M=целая часть M/2
Конец алгоритма.

Определение максимальной величины шага

Определение первого и последнего элемента сравнения для текущего шага

Сортировка элементов последовательности

Определение нового шага сравнения

Определение первого и последнего элемента сравнения для текущего шага


Слайд 40 Зачем необходимо это действие?
Начало алгоритма.
Шаг 1. M=целая часть

Зачем необходимо это действие?Начало алгоритма.Шаг 1. M=целая часть N/2Шаг 2. Пока

N/2
Шаг 2. Пока M0 выполнять
Шаг 2.1. i:=M+1
Шаг

2.2. Пока i<=N выполнять
Шаг 2.2.1. P=A[i]
Шаг 2.2.2. j=i-M
Шаг 2.2.3. Пока j>0 и P Шаг 2.2.3.1 A[j+M]=A[j] Шаг 2.2.3.2 j=j-M
Шаг 2.2.4. A[j]=P
Шаг 2.2.5. i=i+1
Шаг 2.3. M=целая часть M/2
Конец алгоритма.



Слайд 41 Зачем необходимо это действие?
Начало алгоритма.
Шаг 1. M=целая часть

Зачем необходимо это действие?Начало алгоритма.Шаг 1. M=целая часть N/2Шаг 2. Пока

N/2
Шаг 2. Пока M0 выполнять
Шаг 2.1. i:=M+1
Шаг

2.2. Пока i<=N выполнять
Шаг 2.2.1. P=A[i]
Шаг 2.2.2. j=i-M
Шаг 2.2.3. Пока j>0 и P Шаг 2.2.3.1 A[j+M]=A[j] Шаг 2.2.3.2 j=j-M
Шаг 2.2.4. A[j]=P
Шаг 2.2.5. i=i+1
Шаг 2.3. M=целая часть M/2
Конец алгоритма.



Слайд 42 Почему условие выхода из цикла такое?
Начало алгоритма.
Шаг 1.

Почему условие выхода из цикла такое?Начало алгоритма.Шаг 1. M=целая часть N/2Шаг

M=целая часть N/2
Шаг 2. Пока M0 выполнять
Шаг 2.1.

i:=M+1
Шаг 2.2. Пока i<=N выполнять
Шаг 2.2.1. P=A[i]
Шаг 2.2.2. j=i-M
Шаг 2.2.3. Пока j>0 и P Шаг 2.2.3.1 A[j+M]=A[j] Шаг 2.2.3.2 j=j-M
Шаг 2.2.4. A[j]=P
Шаг 2.2.5. i=i+1
Шаг 2.3. M=целая часть M/2
Конец алгоритма.



Слайд 43 Алгоритм быстрой сортировки

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

Слайд 44 Придумана Ч.А.Р. Хоаром (Charles Antony Richard Hoare);

В основе

Придумана Ч.А.Р. Хоаром (Charles Antony Richard Hoare);В основе – сортировка обменами;Основана на делении массива

– сортировка обменами;

Основана на делении массива


Слайд 45 Суть сортировки:

Выбирается некоторое значение (x)- барьерный элемент, который

Суть сортировки:Выбирается некоторое значение (x)- барьерный элемент, который определяется округлением до

определяется округлением до целого деления количества сортируемых элементов на

2;
Просматриваем массив, двигаясь слева направо, пока не найдется элемент, больший x
Затем просматриваем его справа налево, пока не найдется элемент, меньший x

Слайд 46 Суть сортировки:
Меняем найденные элементы местами. В случае, если

Суть сортировки: Меняем найденные элементы местами. В случае, если не найден

не найден наибольший или наименьший элементы, местами меняется средний

элемент с найденным наибольшим или наименьшим элементом;
Дойдя до середины имеем 2 части массива;
Процесс продолжается для каждой части, пока массив не будет отсортирован

Слайд 47 Быстрая сортировка
8
12
3
7
19
11
4
16



Барьерный элемент
4
3
7
8
12
3
4


Барьерный элемент


8
12
11


19

Барьерный элемент

12
19
16
19

8>7 переносим в правую

Быстрая сортировка812371911416Барьерный элемент43781234Барьерный элемент8121119Барьерный элемент121916198>7 переносим в правую часть, т. к.

часть, т. к.
16>7 не переносим, 4

местами 4 и 8

12>7 переносим в правую часть, т. к. 16>7, 8>7,11>7, 19>7 не переносим,
7=7 поэтому меняем местами 7 и 12

4>3

Отсортиро-ванная часть

12>11 переносим в правую часть, т. к.
16>11 не переносим, 8<11 поэтому меняем местами 12 и 8

19>11 переносим в правую часть, т. к. 16>11, 12>11,не переносим,
11=11 поэтому меняем местами 11 и 19

Отсортированная часть

19>12 переносим в правую часть, т. к. 16>12,не переносим,
12=12 поэтому меняем местами 12 и 19

19>16

Массив отсортирован по возрастанию












по возрастанию


Слайд 48 Пусть нужно отсортировать массив А по возрастанию, в

Пусть нужно отсортировать массив А по возрастанию, в котором n элементов

котором n элементов быстрым методом
Вспомогательные переменные:
t –конечный элемент

массива
m - начальный элемент массива
x – элемент относительно которого перемещаются все остальные элементы.
w – промежуточное значение, используемое для перемещения элементов массива

Постановка задачи


Слайд 49 Начало алгоритма.
Шаг 1 i=m j=t
Шаг 2 x=A[округление до

Начало алгоритма.Шаг 1 i=m j=tШаг 2 x=A[округление до целого(m+t)/2]Шаг 3 Пока i

целого(m+t)/2]
Шаг 3 Пока i

i:=i+1,
иначе
Если A[j]>x то j:=j-1
иначе
w:=A[i]; A[i]:=A[j]; A[j]:=w
i:=i+1, j:=j-1
Шаг 4 Если mШаг 5 Если iКонец алгоритма.

Рекурсивный вызов процедуры



Слайд 50 Начало алгоритма.
Шаг 1 i=m j=t
Шаг 2 x=A[округление до

Начало алгоритма.Шаг 1 i=m j=tШаг 2 x=A[округление до целого(m+t)/2]Шаг 3 Пока i

целого(m+t)/2]
Шаг 3 Пока i

i:=i+1,
иначе
Если A[j]>x то j:=j-1
иначе
w:=A[i]; A[i]:=A[j]; A[j]:=w
i:=i+1, j:=j-1
Шаг 4 Если mШаг 5 Если iКонец алгоритма.

Зачем необходимо это действие?



Слайд 51 Начало алгоритма.
Шаг 1 i=m j=t
Шаг 2 x=A[округление до

Начало алгоритма.Шаг 1 i=m j=tШаг 2 x=A[округление до целого(m+t)/2]Шаг 3 Пока i

целого(m+t)/2]
Шаг 3 Пока i

i:=i+1,
иначе
Если A[j]>x то j:=j-1
иначе
w:=A[i]; A[i]:=A[j]; A[j]:=w
i:=i+1, j:=j-1
Шаг 4 Если mШаг 5 Если iКонец алгоритма.

Если исключить условие и просто вызвать процедуру, что может произойти?



Слайд 52 Начало алгоритма.
Шаг 1 i=m j=t
Шаг 2 x=A[округление до

Начало алгоритма.Шаг 1 i=m j=tШаг 2 x=A[округление до целого(m+t)/2]Шаг 3 Пока i

целого(m+t)/2]
Шаг 3 Пока i

i:=i+1,
иначе
Если A[j]>x то j:=j-1
иначе
w:=A[i]; A[i]:=A[j]; A[j]:=w
i:=i+1, j:=j-1
Шаг 4 Если mШаг 5 Если iКонец алгоритма.

Если изменить условие цикла на i



Слайд 53 Начало алгоритма.
Шаг 1 i=m j=t
Шаг 2 x=A[округление до

Начало алгоритма.Шаг 1 i=m j=tШаг 2 x=A[округление до целого(m+t)/2]Шаг 3 Пока i

целого(m+t)/2]
Шаг 3 Пока i

i:=i+1,
иначе
Если A[j]>x то j:=j-1
иначе
w:=A[i]; A[i]:=A[j]; A[j]:=w
i:=i+1, j:=j-1
Шаг 4 Если mШаг 5 Если iКонец алгоритма.

Что происходит в выделенном фрагменте?



Слайд 54 Начало алгоритма.
Шаг 1 i=m j=t
Шаг 2 x=A[округление до

Начало алгоритма.Шаг 1 i=m j=tШаг 2 x=A[округление до целого(m+t)/2]Шаг 3 Пока i

целого(m+t)/2]
Шаг 3 Пока i

i:=i+1,
иначе
Если A[j]>x то j:=j-1
иначе
w:=A[i]; A[i]:=A[j]; A[j]:=w
i:=i+1, j:=j-1
Шаг 4 Если mШаг 5 Если iКонец алгоритма.

Что происходит в выделенном фрагменте?



Слайд 55 Начало алгоритма.
Шаг 1 i=m j=t
Шаг 2 x=A[округление до

Начало алгоритма.Шаг 1 i=m j=tШаг 2 x=A[округление до целого(m+t)/2]Шаг 3 Пока i

целого(m+t)/2]
Шаг 3 Пока i

i:=i+1,
иначе
Если A[j]>x то j:=j-1
иначе
w:=A[i]; A[i]:=A[j]; A[j]:=w
i:=i+1, j:=j-1
Шаг 4 Если mШаг 5 Если iКонец алгоритма.

Что происходит с равными элементами?




Слайд 56 Основывается:

количестве необходимых сравнений

количестве пересылок

Оценка эффективности

Основывается:количестве необходимых сравнений количестве пересылокОценка эффективности

Слайд 57 Параметры оценки алгоритмов
Время сортировки - основной параметр,

Параметры оценки алгоритмов Время сортировки - основной параметр, характеризующий быстродействие алгоритма

характеризующий быстродействие алгоритма
Память – выделяется ли дополнительная

память под временное хранение данных


Слайд 58 Устойчивость – отсортированный массив не меняет порядок элементов

Устойчивость – отсортированный массив не меняет порядок элементов с одинаковыми значениями.Взаимное

с одинаковыми значениями.





Взаимное расположение равных элементов с ключом 1

и дополнительными полями "a", "b", "c"

не изменилось

изменилось

Параметры оценки алгоритмов


Слайд 59 Естественность поведения - эффективность метода при обработке

Естественность поведения - эффективность метода при обработке уже отсортированных, или

уже отсортированных, или частично отсортированных данных. Алгоритм ведет себя

естественно, если учитывает эту характеристику входной последовательности и работает лучше

Параметры оценки алгоритмов


Слайд 60 Оценка алгоритма сортировки выбором
Общее количество сравнений

Оценка алгоритма сортировки выбором Общее количество сравнений  C =N-l +

C =N-l + N-2 + ...+ 1 = (N2-N)/2
Общее

количество операций n + (n-1) + (n-2) + (n-3) + ... + 1 = 1/2 * ( n2+n ) = Theta(n2)
Число обменов < числа сравнений = время сортировки растет квадратично относительно количества элементов

Слайд 61 Устойчив ли этот метод?


Не устойчив

Устойчив ли этот метод?Не устойчив

Слайд 62 Если входная последовательность почти упорядочена, то сравнений будет

Если входная последовательность почти упорядочена, то сравнений будет столько жеалгоритм ведет себя неестественно

столько же

алгоритм ведет себя неестественно


Слайд 63 Оценка алгоритма сортировки вставкой
Для массива 1 2 3

Оценка алгоритма сортировки вставкой Для массива 1 2 3 4 5

4 5 6 7 8 потребуется N-1 сравнение.

Для массива

8 7 6 5 4 3 2 1 потребуется (N2-N)/2 сравнение.

Общее количество операций Theta(n2)

Слайд 64 Устойчив ли этот метод?
Устойчив


порядок элементов с одинаковыми ключами

Устойчив ли этот метод?Устойчивпорядок элементов с одинаковыми ключами не изменяется

не изменяется


Слайд 65 Наименьшие оценки эффективности, когда элементы предварительно упорядочены, а

Наименьшие оценки эффективности, когда элементы предварительно упорядочены, а наибольшие – когда

наибольшие – когда элементы расположены в обратном порядке

алгоритм

ведет себя естественно

Слайд 66 Не эффективный метод, так как включение элемента связано

Не эффективный метод, так как включение элемента связано со сдвигом всех

со сдвигом всех предшествующих элементов на одну позицию, а

эта операция неэкономна

В совокупности устойчивость и естественность поведения алгоритма, делает метод хорошим выбором в соответствующих ситуациях


Слайд 67 Оценка алгоритма сортировки обменом
Количество сравнений
(n2-n)/2

Общее количество операций
Theta(n2)

Оценка алгоритма сортировки обменом Количество сравнений (n2-n)/2Общее количество операцийTheta(n2)

Слайд 68 Ответьте на следующие вопросы:
Устойчив ли этот метод?

Естественное ли

Ответьте на следующие вопросы:Устойчив ли этот метод?Естественное ли поведение этого алгоритма?

поведение этого алгоритма?


Слайд 69 Очень медленен и малоэффективен.
На практике, даже с

Очень медленен и малоэффективен. На практике, даже с улучшениями, работает, слишком

улучшениями, работает, слишком медленно, поэтому почти не применяется.
Прост, и

его можно улучшать

Слайд 70 Сравнение методов простой сортировки
N – количество элементов,
M

Сравнение методов простой сортировкиN – количество элементов, M – кол-во пересылок,

– кол-во пересылок,
C – кол-во сравнений
?
Чему будет равно

количество пересылок

Слайд 71 Выбор метода сортировки
При сортировке маленьких массивов (менее 100

Выбор метода сортировкиПри сортировке маленьких массивов (менее 100 элементов) лучше использовать

элементов) лучше использовать метод «Всплывающего пузырька»;

Если известно, что список

уже почти отсортирован, то подойдет любой метод;

Слайд 72 Оценка алгоритма Шелла
Время выполнения пропорционально n1.2, т. к.

Оценка алгоритма Шелла Время выполнения пропорционально n1.2, т. к. при каждом

при каждом проходе используется небольшое число элементов или элементы

массива уже находятся в относительном порядке, а упорядоченность увеличивается при каждом новом просмотре данных

Слайд 73 Оценка алгоритма быстрой сортировки
Если размер массива равен числу,

Оценка алгоритма быстрой сортировки Если размер массива равен числу, являющемуся степенью

являющемуся степенью двойки (N=2g), и при каждом разделении элемент

X находится точно в середине массива, тогда при первом просмотре выполняется N сравнений и массив разделится на две части размерами N/2. Для каждой из этих частей N/2 сравнений и т. д. Следовательно
C=N+2*(N/2)+4*(N/4)+...+N*(N/N).

Если N не является степенью двойки, то оценка будет иметь тот же порядок

Слайд 74 Общее количество операций Theta(n).

Количество шагов деления (глубина

Общее количество операций Theta(n). Количество шагов деления (глубина рекурсии) составляет приблизительно

рекурсии) составляет приблизительно log n, если массив делится на

более-менее равные части. Таким образом, общее быстродействие: O(n log n)
Если каждый раз в качестве центрального элемента выбирается максимум или минимум входной последовательности, тогда быстродействие O(n2)


Слайд 75 Метод неустойчив.

Поведение довольно естественно, если учесть, что

Метод неустойчив. Поведение довольно естественно, если учесть, что при частичной упорядоченности

при частичной упорядоченности повышаются шансы разделения массива на более

равные части

Сортировка использует дополнительную память

Слайд 76 Итоги:

Предпочтительным является метод прямого включения;

Сортировка методом простого обмена

Итоги:Предпочтительным является метод прямого включения;Сортировка методом простого обмена является наихудшей;Быстрая сортировка превосходит все остальные методы сортировки;

является наихудшей;

Быстрая сортировка превосходит все остальные методы сортировки;


Слайд 77 Контрольные вопросы
Что такое «сортировка»?
В чем заключается метод сортировки

Контрольные вопросыЧто такое «сортировка»?В чем заключается метод сортировки отбором?В чем заключается

отбором?
В чем заключается метод сортировки вставками?
В чем заключается метод

пузырьковой сортировки?
В чем заключается метод быстрой сортировки?
В чем заключается метод сортировки Шелла?

  • Имя файла: metody-sortirovki-dannyh.pptx
  • Количество просмотров: 157
  • Количество скачиваний: 0