Рекурсивные алгоритмы (C++). Лекция 8 по основам программирования

Содержание

Слайд 2

Слайд 3

РЕКУРСИВНЫМ называется способ построения объекта, в котором определение объекта включает аналогичные объекты в виде составных частей.

РЕКУРСИВНЫМ называется способ построения объекта, в котором определение объекта включает аналогичные объекты

в виде составных  частей.
Слайд 4

РЕКУРСИЯ Рекурсия – метод определения функции через её предыдущие и ранее

РЕКУРСИЯ

Рекурсия – метод определения функции через её предыдущие и ранее определенные

значения, а так же способ организации вычислений, при котором функция вызывает сама себя с другим аргументом.
Простая рекурсия – вызов функции из неё же самой непосредственно.
Сложная, или косвенная рекурсия – вызов через другие функции, например, функция а вызывает функцию б, а функция б функцию а.
Слайд 5

РЕКУРСИЯ Глубина рекурсии – количество вложенных вызовов функции.

РЕКУРСИЯ

Глубина рекурсии – количество вложенных вызовов функции.

Слайд 6

АЛГОРИТМЫ СОРТИРОВКИ

АЛГОРИТМЫ СОРТИРОВКИ

Слайд 7

АЛГОРИТМЫ СОРТИРОВКИ РЕКУРСИВНЫЕ АЛГОРИТМЫ

АЛГОРИТМЫ СОРТИРОВКИ

РЕКУРСИВНЫЕ АЛГОРИТМЫ

Слайд 8

БЫСТРАЯ СОРТИРОВКА Стратегия – «разделяй и властвуй». Описание алгоритма: Выбираем в

БЫСТРАЯ СОРТИРОВКА

Стратегия – «разделяй и властвуй».
Описание алгоритма:
Выбираем в массиве некоторый

элемент, который будем называть опорным элементом.
Операция разделения массива: реорганизуем массив таким образом, чтобы все элементы, меньшие или равные опорному элементу, оказались слева от него, а все элементы, большие опорного — справа от него.
Рекурсивно упорядочиваем подмассивы.
Слайд 9

БЫСТРАЯ СОРТИРОВКА

БЫСТРАЯ СОРТИРОВКА

Слайд 10

БЫСТРАЯ СОРТИРОВКА void sort(int in[], int a, int b){ int i,j,mode;

БЫСТРАЯ СОРТИРОВКА

void sort(int in[], int a, int b){
int i,j,mode;
if (a>=b) return;


for (i=a, j=b, mode=1; i < j; mode >0 ? j-- : i++)
if (in[i] > in[j]) {
int c = in[i]; in[i] = in[j]; in[j]=c;
mode = -mode;
}
sort(in,a,i-1);
sort(in,i+1,b);
}
Слайд 11

СОР­ТИ­РОВ­КА СЛИЯ­НИ­ЕМ Стратегия – «разделяй и властвуй». Описание алгоритма: Сортируемый массив

СОР­ТИ­РОВ­КА СЛИЯ­НИ­ЕМ

Стратегия – «разделяй и властвуй».
Описание алгоритма:
Сортируемый массив разбивается на

две части примерно одинакового размера;
Каждая из получившихся частей сортируется отдельно тем же самым алгоритмом;
Два упорядоченных массива половинного размера соединяются в один.
Слайд 12

СОР­ТИ­РОВ­КА СЛИЯ­НИ­ЕМ

СОР­ТИ­РОВ­КА СЛИЯ­НИ­ЕМ

Слайд 13

ОПЕРАЦИЯ СЛИЯНИЯ Отделяем эле­мен­т, наименьший из двух имеющих­ся в на­ча­лах ис­ход­ных

ОПЕРАЦИЯ СЛИЯНИЯ

Отделяем эле­мен­т, наименьший из двух имеющих­ся в на­ча­лах ис­ход­ных мас­си­вов, и

присоединяем его к кон­цу ре­зуль­ти­рую­ще­го мас­си­ва.
Эле­мен­ты пе­ре­но­сим до тех пор, по­ка один из ис­ход­ных мас­си­вов не за­кон­чит­ся.
По­сле это­го остав­ший­ся «хвост» од­но­го из вход­ных мас­си­вов до­пи­сы­ва­ет­ся в ко­нец ре­зуль­ти­рую­ще­го мас­си­ва. 
Слайд 14

ОПЕРАЦИЯ СЛИЯНИЯ

ОПЕРАЦИЯ СЛИЯНИЯ

Слайд 15

ЗАДАЧИ 1. Реализовать алгоритм сортировки рекурсивным разделением списка. 2. Реализовать алгоритм сортировки рекурсивным слиянием списка.

ЗАДАЧИ

1. Реализовать алгоритм сортировки рекурсивным разделением списка.
2. Реализовать алгоритм сортировки

рекурсивным слиянием списка.