- •Рекурсия. Виды. Особенности.
- •Прямая Рекурсия. Рекурсивное определение значение факториала
- •Косвенная Рекурсия. Опережающее описание.
- •Сортировка массивов. Типы сортировок.
- •Метод прямого обмена ..Пузырька
- •Метод прямого выбора:
- •Метод прямого включения
- •Алгоритмы поиска. Линейный поиск
- •Алгоритмы поиска. Поиск делением пополам
- •Статические и динамические переменные.
- •Указатели. Типы.
- •Доступ к переменной по указателю - разыменование указателя
- •Стандартные процедуры и функции управления динамической памятью
- •Динамические структуры данных: стек, очередь, список и их особенности.
- •Список. Типы списков. Операции над списками.
- •Выбор нового текущего элемента в списке.
- •Вывод всех элементов из списка.
- •Добавление нового элемента справа от текущего в списке.
- •Удаление текущего элемента из списка
- •Список.Удаление элемента справа от текущего.
- •Стек. Операции над стеком.
Метод прямого обмена ..Пузырька
For i:=1 to n do begin
For j:=1 to n-i do
if a[j]>a[j+1] then begin
p:=a[j];
a[j]:=a[j+1];
a[j+1]:=p
end;
В основе алгоритма лежит обмен соседних элементов массива. Каждый элемент массива, начиная с первого, сравнивается со следующим, и если он больше следующего, то элементы меняются местами. Таким образом, элементы с меньшим значением продвигаются к началу массива (всплывают), а элементы с большим значением — к концу массива (тонут). Поэтому данный метод сортировки обменом иногда называют методом "пузырька". Этот процесс повторяется столько раз, сколько элементов в массиве, минус единица.
следует отметить, что максимальное необходимое количество циклов проверки соседних элементов массива равно количеству элементов массива минус один. Вместе с тем возможно, что массив реально будет упорядочен за меньшее число циклов.
Метод прямого выбора:
начиная с первой записи таблицы, осуществляется поиск элемента,имеющего наименьшее значение ключа. После того, как этот элемент найден, он меняется местами с первой записью в таблице. В результате такой перестановки запись с наименьшим значением ключа помещается в первую позицию в таблице. Затем, начиная со второго элемента таблицы, осуществляется поиск второго наименьшего ключа. Найденный элемент меняется местами со вторым элементом таблицы. Этот процесс продолжается до тех пор, пока все записи не будут расположены в порядке возрастания кодов ключа.
For i:=1 to n-1 do begin
R:=i;
X:=a[i];
For j:=i+1 to n do
if a[j]<x then begin r:=j; x:=a[r] end;
A[r]:=a[i];
A[i]:=x
End;
Writeln (‘результат’);
For i:=1 to n do write (a[i],’ ‘)
Метод прямого включения
For i:=2 to n do begin
X:=a[i];
A[0]:=X;
J:=i;
While X<a[j-1] do begin
a[j]:=a[j-1];
Dec(j)
End;
A[j]:=x
End;
В методе прямого включения идея заключается в следующем, мы шаг за шагом идем по массиву и каждый элемент последовательно вставляем по убыванию или возрастанию в нужную нам позицию. Соответственно, что бы упорядочить N элементов мы должны будем сделать ровно N шагов.
Алгоритмы поиска. Линейный поиск
Задача поиска требуемого элемента в массиве а[i], i=1..n заключается в нахождении индекса i, удовлетворяющего условию а[i]=Х. Х называют ключом поиска. Различают:
-Линейный поиск
-Бинарный поиск
Линейный поиск используется, когда нет никакой дополнительной информации о разыскиваемых данных.
i:=1; n1:=n+1;
While (i<n1) and (a[i]<>x) do i:=i+1;
If i=n1 then writeln (‘net elementa’ ) else writeln (‘ element=‘, a[i]);
Линейным поиском называется самый простой подход, при котором элементы контейнера последовательно сравниваются с установленным значением до тех пор, пока искомый элемент не будет найден. Для поиска записи среди N элементов может потребоваться N сравнений (в среднем N/2). Линейный поиск используется для небольших несортированных последовательностей