Основы алгоритмизации и программирования. Сортировка Быстрая

Слайд 2

2. Идея алгоритма 4. Словесное представление алгоритма 5. Блок-схема 1. Понятие

2. Идея алгоритма

4. Словесное представление
алгоритма

5. Блок-схема

1. Понятие алгоритма

6. Подробный разбор

элементов блок-схемы

Часть 1:

Часть 2:

3. Визуализация

7. Программная
реализация на языке
программирования С

Слайд 3

Быстрая сортировка (англ. quick sort, сортировка Хоара) — один из самых

Быстрая сортировка (англ. quick sort, сортировка Хоара) — один из самых известных и

широко используемых алгоритмов сортировки. Среднее время работы O(n log n), что является асимптотически оптимальным временем работы для алгоритма, основанного на сравнении. Хотя время работы алгоритма для массива из n элементов в худшем случае может составить Θ(n^2), на практике этот алгоритм является одним из самых быстрых. Для этого алгоритма применяется рекурсивный метод.
Рекурсией называется ситуация, когда программа вызывает сама себя непосредственно или косвенно (через другие функции).
Слайд 4

Выбираем из массива элемент, называемый опорным, и запоминаем его значение. Это

Выбираем из массива элемент, называемый опорным, и запоминаем его значение. Это

может быть любой из элементов массива. От выбора опорного элемента не зависит корректность алгоритма, но в отдельных случаях может сильно зависеть его эффективность.
Далее начинаем двигаться от начала массива по возрастающей, а потом от конца массива по убывающей. Цель: переместить в правую часть элементы больше опорного, а в левую – элементы меньше опорного. Если во время движения по возрастающей находится элемент со значением больше опорного, то мы выходим из цикла, прибавляем единицу к индексу элемента, на котором остановились, и переходим к циклу с движением по убывающей. В этом цикле мы остаемся до тех пор, пока не находится элемент со значением меньше опорного.
Слайд 5

Как только такой элемент найден, мы отнимаем единицу от его индекса,

Как только такой элемент найден, мы отнимаем единицу от его индекса,

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

1 4 6 2 3 5 7 BEGIN END

1

4

6

2

3

5

7

BEGIN

END

Слайд 7

array – массив, piv – номер опорного элемента, b – индекс

array – массив, piv – номер опорного элемента, b – индекс

первого элемента массива, e – индекс последнего элемента массива
Слайд 8

array – массив, piv – номер опорного элемента, b – индекс

array – массив, piv – номер опорного элемента, b – индекс

первого элемента массива, e – индекс последнего элемента массива
Слайд 9

Слайд 10

Слайд 11

Слайд 12

Слайд 13

Слайд 14

Слайд 15

Слайд 16

Слайд 17

Слайд 18

Слайд 19

Слайд 20