ВУЗ:
Составители:
Рубрика:
33
procedure QuickSort(var A: IArr; n: integer);
procedure QuickSort0(l,r: integer);
var i,j,x: integer;
begin
i:=l; j:=r;
x:=A[(l+r) div 2];
repeat
while A[i]<x do Inc(i);
while A[j]>x do Dec(j);
if i<=j then
begin
Swap(A[i],A[j]);
Inc(i); Dec(j);
end
until i>j;
if l<j then QuickSort0(l,j);
if i<r then QuickSort0(i,r);
end;
begin
QuickSort0(1,n);
end;
Здесь l и r – левая и правая границы сортируемой части массива,
(l+r) div 2 – индекс среднего элемента.
2.8 Рекурсия в модулях
Подпрограммы, участвующие в косвенной рекурсии, могут описываться в раз-
ных модулях. В этом случае возникает рекурсивная зависимость между модулями.
Пусть подпрограмма р вызывает подпрограмму q, а подпрограмма q вызыва-
ет подпрограмму р, то есть имеет место косвенная рекурсия. Наша задача – по-
местить р в модуль Unit1.pas, а q – в модуль Unit2.pas
.
Циклическая зависимость между модулями запрещена, если обе ссылки на
модули в секции uses содержатся в разделе
interface. То есть, следующие опи-
сания приведут к ошибке:
Unit1.pas
unit Unit1;
interface
uses Unit2;
procedure p;
...
Unit2.pas
unit Unit2;
interface
uses Unit1;
procedure q;
...
Страницы
- « первая
- ‹ предыдущая
- …
- 29
- 30
- 31
- 32
- 33
- …
- следующая ›
- последняя »