|
Текст подпрограммы и версий avz3r_p.zip avz3e_p.zip avz5r_p.zip avz5e_p.zip |
Тексты тестовых примеров tavz3r_p.zip tavz3e_p.zip tavz5r_p.zip tavz5e_p.zip |
Упорядочивание вектора по возрастанию абсолютных значений его компонент.
AVZ3R производит упорядочивание N последовательно расположенных компонент вектора А по возрастанию абсолютных значений.
R.С.Singleton, Аlgorithm 347, an efficient algorithm for sorting with minimal storage, CACM, 12, 3, 1969.
procedure AVZ3R(var A :Array of Real; N :Integer);
Параметры
| A - | вещественный одномерный массив размера по крайней мере N, содержащий компоненты исходного вектора A; по окончании работы подпрограммы содержит абсолютные значения компонент в возрастающем порядке; |
| N - | заданное число упорядочиваемых компонент (тип: целый). |
Версии
| AVZ3E - | упорядочивание вектора, заданного с расширенной (Extended) точностью, по возрастанию абсолютных значений его компонент. |
| AVZ5R - | упорядочивание вектора по возрастанию значений его компонент. |
| AVZ5E - | упорядочивание вектора, заданного с расширенной (Extended) точностью, по возрастанию значений его компонент. |
Вызываемые подпрограммы: нет
Замечания по использованию
|
В подпрограмах АVZ3E и AVZ5E параметр А должен иметь тип Extended. По окончании работы подпрограмм АVZ5R и АVZ5E массив А содержит компоненты исходного вектора в возрастающем порядке. |
1.
Unit Tavz3r_p;
interface
uses
SysUtils, Math, { Delphi }
LStruct, Lfunc, UtRes_p, AVZ3R_p;
function Tavz3r: String;
implementation
function Tavz3r: String;
var
N,_i :INteger;
const
A :Array [0..9] of Real = ( -1.0,1.5,-2.0,2.5,-3.0,3.5,-4.0,4.5,-5.0,5.5 );
begin
Result := '';
N := 10;
AVZ3R(A,N);
Result := Result + #$0D#$0A;
for _i:=0 to 9 do
begin
Result := Result + Format('%20.16f ',[A[_i]]);
if ( ((_i+1) mod 5)=0 )
then Result := Result + #$0D#$0A;
end;
Result := Result + #$0D#$0A;
UtRes('Tavz3r',Result); { вывод результатов в файл Tavz3r.res }
exit;
end;
end.
Результат:
А = (1., 1.5, 2., 2.5, 3., 3.5, 4., 4.5, 5., 5.5)
2.
Unit Tavz5r_p;
interface
uses
SysUtils, Math, { Delphi }
LStruct, Lfunc, UtRes_p, AVZ5R_p;
function Tavz5r: String;
implementation
function Tavz5r: String;
var
N,_i :INteger;
const
B :Array [0..9] of Real = ( - 1., 1.5, - 2., 2.5, - 3., 3.5, - 4., 4.5, - 5., 5.5 );
begin
Result := '';
N := 10;
AVZ5R(B,N);
Result := Result + #$0D#$0A;
for _i:=0 to 9 do
begin
Result := Result + Format('%20.16f ',[B[_i]]);
if ( ((_i+1) mod 5)=0 )
then Result := Result + #$0D#$0A;
end;
Result := Result + #$0D#$0A;
UtRes('Tavz5r',Result); { вывод результатов в файл Tavz5r.res }
exit;
end;
end.
Результат:
B = (- 5., - 4., - 3., - 2., - 1., 1.5, 2.5, 3.5, 4.5, 5.5) .