
- •Задача сортировки
- •Сортировка – упорядочение данных
- •Цель лекции: изучить основные
- •Простые сортировки
- •Простые сортировки
- •Сортировка простыми
- •Алгоритм простыми
- •Алгоритм простыми
- •Реализация алгоритма простыми вставкам
- •Реализация алгоритма простыми вставкам
- •Эффективность алгоритма StraightInsertion
- •Эффективность алгоритма StraightInsertion
- •Сортировка простым выбором
- •Пример 1 (поиск мах)
- •Сортировка выбором
- •Сортировка выбором
- •Алгоритм сортировки
- •Обмен значений двух переменных
- •Реализация StraightSelection
- •Сортировка выбором
- •Эффективность алгоритма
- •Сортировка простыми
- •Сортировка простыми
- •Сортировка простыми обменами
- •Сортировка простыми обменами BubbleSort
- •Сортировка простыми обменами
- •Сортировка простыми обменами
- •Улучшенные сортировки
- •Сортировка Шелла
- •Сортировка Шелла
- •Шейкер-сортировка
- •Шейкер-сортировка
- •Шейкер-сортировка
- •Шейкер-сортировка (продолжение)
- •Шейкер-сортировка
- •Шейкер-сортировка
- •Быстрая сортировка QuickSort
- •Быстрая сортировка QuickSort
- •Швидке сортування Алгоритм сортування:
- •Procedure QuickSort;
- •Внешняя сортировка
- •Ключевые термины
- •Краткие итоги
- •Анализ алгоритмов сортировок
- •Эффективность алгоритма в разных случаях
- •Асимптотические обозначения и основные классы эффективности
- •Основные асимптотические классы эффективности
- •Сравнение сортировок порядка O(n2)
- •Сравнение сортировок порядка O(n log2n)
- •Сравнение сортировок

Задача сортировки
1

Сортировка – упорядочение данных
Методы упорядочения подразделяются на внутренние (обрабатывающие массивы) и внешние (занимающиеся только файлами)
Эту лекцию мы посвятим только внутренним сортировкам. Их важная особенность состоит в том, что эти алгоритмы не требуют дополнительной памяти: вся работа по упорядочению производится внутри одного и того же массива
).
2

Цель лекции: изучить основные
алгоритмы сортировок, научиться решать задачи сортировок массивов различными методами и выполнять оценку эффективности алгоритмов сортировки.
Эффективность сортировки определяется её быстродействием.
Быстродействие определяется количеством необходимых сравнений и перестановок елементов. При этом необходимо помнить, что перестановки занимают больше времени, чем сравнений.
3

Простые сортировки
К простым внутренним сортировкам относят методы, сложность которых пропорциональна квадрату размерности входных данных - С*N2 действий,
где С - некоторая константа, N - размерность
Количество действий, необходимых для упорядочения некоторой последовательности данных зависит не только от длины этой последовательности, но и от ее структуры.
Сложность алгоритмов подсчитывают раздельно по количеству сравнений и по количеству перемещений данных в памяти (пересылок), Общую же эффективность алгоритма обычно оценивают "в среднем": как среднее арифметическое от сложности алгоритма "в лучшем случае" и "в худшем случае", то есть (Eff_best + Eff_worst)/2.
4

Простые сортировки
Три основные классы сортировки массивов in situ:
1. сортировка методом "пузырька" (простого обмена);
2. сортировка методом простого выбора (простой перебор);
3. сортировка методом простого включения (вставки: сдвиг-
вставка, вставками, вставка и сдвиг). 5

Сортировка простыми
вставками (включением)
Сортировка простыми вставками
Самый простой способ сортировки, который приходит в голову, - это упорядочение данных по мере их поступления.
В этом случае при вводе каждого нового значения можно опираться на тот факт, что все предыдущие элементы уже образуют отсортированную последовательность.
6

7

Алгоритм простыми
вставками (включением)
1.Первый элемент записать "не раздумывая".
2.Пока не закончится последовательность вводимых данных, для каждого нового ее элемента выполнять следующие действия:
-начав с конца уже существующей упорядоченной
последовательности, все ее элементы, которые больше (меньше), чем вновь вводимый элемент, сдвинуть на 1 шаг назад;
- записать новый элемент на освободившееся место.
(На каждом шаге алгоритма выбираем один из |
|
элементов входных данных и вставляем его на |
|
нужную позицию в уже отсортированной |
|
последовательности до тех пор, пока набор |
|
входных данных не будет исчерпан) |
8 |

Алгоритм простыми
вставками (включением)
Предположим, что нужно отсортировать следующий набор чисел:
44 55 12 42 94 18 06 67
i=2 |
44 55 12 42 94 18 06 67 |
i=3 |
12 44 55 42 94 18 06 67 |
i=4 |
12 42 44 55 94 18 06 67 |
i=5 |
12 42 44 55 94 18 06 67 |
i=6 |
12 18 42 44 55 94 06 67 |
i=7 |
06 12 18 42 44 55 94 67 |
i=8 |
06 12 18 42 44 55 67 94 |
9

Реализация алгоритма простыми вставкам
(включением StraightInsertion) |
|
for i:= 2 to N do |
|
if a[i-1]>a[i] then |
|
Begin |
|
x:= a[i]; |
|
j:= i-1; |
|
while (j>0)and(a[j]>x) do |
|
begin |
|
a[j+1]:= a[j]; |
|
j:= j-1; |
|
end; |
|
a[j+1]:= x; |
|
end; |
10 |
|