Содержание
-
1 Методы сортировки данных Соколова Наталья Валентиновна, преподаватель спец. Дисциплин Sokolova_natali@list.ru дисциплина «Основы алгоритмизации и программирования 2 курс
-
2 Сортировка объектов – расположение объектов по возрастанию или убыванию согласно определенному линейному отношению порядка
-
3 Сортировка объектов: Внутренняя Внешняя
-
4 Внутренняя сортировка оперирует с массивами, целиком помещающимися в оперативной памяти с произвольным доступом к любой ячейке. Данные обычно сортируются на том же месте, без дополнительных затрат
-
5
-
Алгоритм сортировки вставкой
6
-
7 Суть сортировки: Упорядочиваются два элемента массива Вставка третьего элемента в соответствующее место по отношению к первым двум элементам. Этот процесс повторяется до тех пор, пока все элементы не будут упорядочены.
-
Сортировка вставкой
8 13 6 2 10 8 13 6 8 2 13 6 8 8 13 13 10 668
-
Постановка задачи
9 Пусть нужно отсортировать массив Апо возрастанию, в котором N элементов методом вставки Вспомогательные переменные j– номер первого элемента остатка. i – номер перемещаемого элемента. f– условие выхода из цикла (если f=1, то выход) Val – промежуточное значение, используемое для перемещения элементов массив
-
10 Начало алгоритма. Шаг 1j:=2, Шаг 2Покаj=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.2i:=i-1, Шаг 2.3j:=j+1. Конец алгоритма.
-
11 Начало алгоритма. Шаг 1j:=2, Шаг 2Покаj=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.3j:=j+1. Конец алгоритма. Что обозначает данное условие?
-
12 Начало алгоритма. Шаг 1j:=2, Шаг 2Покаj=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.3j:=j+1. Конец алгоритма. Почему стартовое значение j =2 ?
-
13 Начало алгоритма. Шаг 1j:=2, Шаг 2Покаj=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.3j:=j+1. Конец алгоритма. Почему стартовое значение i =2 ?
-
14 Начало алгоритма. Шаг 1j:=2, Шаг 2Покаj=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.3j:=j+1. Конец алгоритма. Всегда ли происходит обмен входного j элемента с отсортированным элементом ?
-
15 Начало алгоритма. Шаг 1j:=2, Шаг 2Покаj=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.3j:=j+1. Конец алгоритма. Возможно ли заменить цикл ПОКА и ЕСЛИ одним циклом ПОКА с условием i>=2 и A[i-1]>A[i]?
-
16 Начало алгоритма. Шаг 1j:=2, Шаг 2Покаj=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.3j:=j+1. Конец алгоритма. Для чего нужен этот оператор?
-
Алгоритм сортировки выбором
17
-
18 Суть сортировки: Выбирается элемент с наименьшим значением и делается его обмен с первым элементом массива. Затем находится элемент с наименьшим значением из оставшихся n-1 элементов и делается его обмен со вторым элементом и т.д. до обмена двух последних элементов.
-
19 13 6 2 10 8 Сортировка выбором Min 2 Min 6 Min 8 13 Min 10 13 Отсортиро-ванная часть Отсортированная часть Отсортированная часть Массив отсортирован по возрастанию по возрастанию
-
Постановка задачи
20 Пусть нужно отсортировать массив Апо возрастанию, в котором N элементов методом выбора. Вспомогательные переменные j– номер первого элемента остатка. i – номер перемещаемого элемента. min – минимальное число в массиве. Imin– номер минимального числа в массиве
-
21 Начало алгоритма. Шаг 1j:=1, Шаг 2Покаj
-
22 Начало алгоритма. Шаг 1j:=1, Шаг 2Покаj
-
23 Начало алгоритма. Шаг 1j:=1, Шаг 2Покаj
-
Алгоритм сортировки обменом («пузырьковая»)
24
-
25 Суть сортировки: Последовательно просматривается массив и сравнивается каждая пара элементов между собой. При этом "неправильное" расположение элементов устраняется путем их перестановки. Процесс просмотра и сравнения элементов повторяется до просмотра всего массива.
-
26 Сортировка обменом 13 6 2 10 8 Первый просмотр 6 13 8 13 13 2 10 13 Второй просмотр 6 8 2 8 Третий просмотр 6 2 6 Четвертый просмотр 2 62 82 62 по возрастанию
-
Постановка задачи
27 Пусть нужно отсортировать массив Апо возрастанию, в котором N элементов методом обмена Вспомогательные переменные j– номер первого элемента остатка. i – номер перемещаемого элемента. Val – промежуточное значение, используемое для перемещения элементов массива
-
28 Начало алгоритма. Шаг 1j:=N, Шаг 2Покаj>=2выполнять: Шаг 2.1i:=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.3j:=j-1. Конец алгоритма. Сравнение соседних элементов Обмен соседних элементов местами, в случае если левый больше правого Формируется отсортированная часть
-
29 Начало алгоритма. Шаг 1j:=N, Шаг 2Покаj>=2выполнять: Шаг 2.1i:=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.3j:=j-1. Конец алгоритма. Почему условие такое?
-
30 Начало алгоритма. Шаг 1j:=N, Шаг 2Покаj>=2выполнять: Шаг 2.1i:=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.3j:=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 шаг. 2 группы из 4-х элементов 1 2 1 2 1 2 1 2 4 1 6 8 41 8>6 по возрастанию 47 9 7 8>7 8 7 6
-
36 Сортировка Шелла 4 1 6 3 шаг. 1 группа из 8-ми элементов Массив отсортирован по возрастанию по возрастанию 12 14 9 8 7 14 6 4 18 8 12 79 9 14 12>9 9 12 8
-
Постановка задачи
37 Пусть нужно отсортировать массив Апо возрастанию, в котором N элементов методом Шелла Вспомогательные переменные j– номер первого элемента остатка. i – номер перемещаемого элемента. M- оптимальный шаг P– промежуточное значение, используемое для перемещения элементов массива
-
38 Начало алгоритма. Шаг 1.M=целая часть N/2 Шаг 2.ПокаM0выполнять Шаг 2.1.i:=M+1 Шаг 2.2.Покаi0 и P
-
39 Начало алгоритма. Шаг 1.M=целая часть N/2 Шаг 2.ПокаM0выполнять Шаг 2.1.i:=M+1 Шаг 2.2.Покаi0 и P
-
40 Зачем необходимо это действие? Начало алгоритма. Шаг 1.M=целая часть N/2 Шаг 2.ПокаM0выполнять Шаг 2.1.i:=M+1 Шаг 2.2.Покаi0 и P
-
41 Зачем необходимо это действие? Начало алгоритма. Шаг 1.M=целая часть N/2 Шаг 2.ПокаM0выполнять Шаг 2.1.i:=M+1 Шаг 2.2.Покаi0 и P
-
42 Почему условие выхода из цикла такое? Начало алгоритма. Шаг 1.M=целая часть N/2 Шаг 2.ПокаM0выполнять Шаг 2.1.i:=M+1 Шаг 2.2.Покаi0 и P
-
Алгоритм быстрой сортировки
43
-
44 Придумана Ч.А.Р. Хоаром (Charles Antony Richard Hoare); В основе – сортировка обменами; Основана на делении массива
-
45 Суть сортировки: Выбирается некоторое значение (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 переносим в правую часть, т. к. 16>7 не переносим, 47 переносим в правую часть, т. к. 16>7, 8>7,11>7, 19>7не переносим, 7=7 поэтому меняем местами 7 и 12 4>3 Отсортиро-ванная часть 12>11переносим в правую часть, т. к. 16>11 не переносим, 811переносим в правую часть, т. к. 16>11, 12>11,не переносим, 11=11 поэтому меняем местами 11 и 19 Отсортированная часть 19>12переносим в правую часть, т. к. 16>12,не переносим, 12=12 поэтому меняем местами 12 и 19 19>16 Массив отсортирован по возрастанию Меньше равно 7 Больше 7 по возрастанию
-
Постановка задачи
48 Пусть нужно отсортировать массив Апо возрастанию, в котором n элементов быстрым методом Вспомогательные переменные: t –конечный элемент массива m - начальный элемент массива x – элемент относительно которого перемещаются все остальные элементы. w – промежуточное значение, используемое для перемещения элементов массива
-
49 Начало алгоритма. Шаг 1i=m j=t Шаг 2 x=A[округление до целого(m+t)/2] Шаг 3 Покаixтоj:=j-1 иначе w:=A[i]; A[i]:=A[j]; A[j]:=w i:=i+1, j:=j-1 Шаг 4Если m
-
50 Начало алгоритма. Шаг 1i=m j=t Шаг 2x=A[округление до целого(m+t)/2] Шаг 3Покаixтоj:=j-1 иначе w:=A[i]; A[i]:=A[j]; A[j]:=w i:=i+1, j:=j-1 Шаг 4Если m
-
51 Начало алгоритма. Шаг 1i=m j=t Шаг 2x=A[округление до целого(m+t)/2] Шаг 3Покаixтоj:=j-1 иначе w:=A[i]; A[i]:=A[j]; A[j]:=w i:=i+1, j:=j-1 Шаг 4Если m
-
52 Начало алгоритма. Шаг 1i=m j=t Шаг 2x=A[округление до целого(m+t)/2] Шаг 3Покаixтоj:=j-1 иначе w:=A[i]; A[i]:=A[j]; A[j]:=w i:=i+1, j:=j-1 Шаг 4Если m
-
53 Начало алгоритма. Шаг 1i=m j=t Шаг 2x=A[округление до целого(m+t)/2] Шаг 3Покаixтоj:=j-1 иначе w:=A[i]; A[i]:=A[j]; A[j]:=w i:=i+1, j:=j-1 Шаг 4Если m
-
54 Начало алгоритма. Шаг 1i=m j=t Шаг 2x=A[округление до целого(m+t)/2] Шаг 3Покаixтоj:=j-1 иначе w:=A[i]; A[i]:=A[j]; A[j]:=w i:=i+1, j:=j-1 Шаг 4Если m
-
55 Начало алгоритма. Шаг 1i=m j=t Шаг 2x=A[округление до целого(m+t)/2] Шаг 3Покаixтоj:=j-1 иначе w:=A[i]; A[i]:=A[j]; A[j]:=w i:=i+1, j:=j-1 Шаг 4Если m
-
56 Основывается: количестве необходимых сравнений количестве пересылок Оценка эффективности
-
Параметры оценки алгоритмов
57 Время сортировки - основной параметр, характеризующий быстродействие алгоритма Память – выделяется ли дополнительная память под временное хранение данных
-
58 Устойчивость – отсортированный массив не меняет порядок элементов с одинаковыми значениями. Взаимное расположение равных элементов с ключом 1 и дополнительными полями "a", "b", "c" не изменилось изменилось
-
59 Естественность поведения - эффективность метода при обработке уже отсортированных, или частично отсортированных данных. Алгоритм ведет себя естественно, если учитывает эту характеристику входной последовательности и работает лучше
-
Оценка алгоритма сортировки выбором
60 Общее количество сравнений 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 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)
-
Ответьте на следующие вопросы:
68 Устойчив ли этот метод? Естественное ли поведение этого алгоритма?
-
69 Очень медленен и малоэффективен. На практике, даже с улучшениями, работает, слишком медленно, поэтому почти не применяется. Прост, и его можно улучшать
-
Сравнение методов простой сортировки
70 N– количество элементов, M – кол-во пересылок, C – кол-во сравнений ? Чему будет равно количество пересылок
-
Выбор метода сортировки
71 При сортировке маленьких массивов (менее 100 элементов) лучше использовать метод «Всплывающего пузырька»; Если известно, что список уже почти отсортирован, то подойдет любой метод;
-
Оценка алгоритма Шелла
72 Время выполнения пропорционально 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). Количество шагов деления (глубина рекурсии) составляет приблизительно logn, если массив делится на более-менее равные части. Таким образом, общее быстродействие: O(nlogn) Если каждый раз в качестве центрального элемента выбирается максимум или минимум входной последовательности, тогда быстродействие O(n2)
-
75 Метод неустойчив. Поведение довольно естественно, если учесть, что при частичной упорядоченности повышаются шансы разделения массива на более равные части Сортировка использует дополнительную память
-
76 Итоги: Предпочтительным является метод прямого включения; Сортировка методом простого обмена является наихудшей; Быстрая сортировка превосходит все остальные методы сортировки;
-
Контрольные вопросы
77 Что такое «сортировка»? В чем заключается метод сортировки отбором? В чем заключается метод сортировки вставками? В чем заключается метод пузырьковой сортировки? В чем заключается метод быстрой сортировки? В чем заключается метод сортировки Шелла?
-
78 Какой алгоритм сортировки считается самым простым? Какой алгоритм сортировки считается самым эффективным? Сколько существует групп алгоритмов сортировки? По каким признакам характеризуются алгоритмы сортировки? Что нужно учитывать при выборе алгоритма сортировки?
Нет комментариев для данной презентации
Помогите другим пользователям — будьте первым, кто поделится своим мнением об этой презентации.