Основы программирования. Файлы. Рекурсия - 29 стр.

UptoLike

Составители: 

31
Swap(A[i],A[k]);
...
Permutation0(k+1);
Swap(A[i],A[k]);
end;
end;
Очевидно, при
k=n рекурсию надо завершать и выдавать полученную пере-
становку. Приведем итоговую процедуру, считая, что для вывода массива
A дли-
ны
n составлена процедура Print(A,n).
procedure Permutation(n: integer);
var A: IArr;
procedure Permutation0(k: integer);
var i: integer;
begin
for i:=k to n do
begin
Swap(A[i],A[k]);
if k=n then
Print(A,n)
else Permutation0(k+1);
Swap(A[i],A[k]);
end;
end;
var i: integer;
begin
for i:=1 to n do
A[i]:=i;
Permutation0(1);
end;
2.7 Быстрая сортировка
Алгоритм быстрой сортировкиодин из самых производительных и часто
используемых алгоритмов сортировки. Основная идея алгоритма быстрой сорти-
ровки состоит в следующем. На первом шаге выбирается некоторый опорный
элемент
x, относительно которого переупорядочиваются остальные элементы
массива. Переупорядочение осуществляется следующим образом: все элементы,
меньшие
x, переставляются перед x, а больше или равные xпосле x. В итоге
массив оказывается разбит на две части: элементы, меньшие
x, и элементы, боль-
шие или равные x. Затем к первой и второй частям рекурсивно применяется алго-
ритм быстрой сортировки до тех пор, пока в каждой части не останется по одному
элементу. Желательно выбрать элемент
x таким, чтобы количество элементов в