Текст подпрограммы и версий 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) .