Текст подпрограммы и версий ( Фортран ) avz4r.zip avz4d.zip avz6r.zip avz6d.zip |
Тексты тестовых примеров ( Фортран ) tavz4r.zip tavz4d.zip tavz6r.zip tavz6d.zip |
Текст подпрограммы и версий ( Си ) avz4r_c.zip avz4d_c.zip avz6r_c.zip avz6d_c.zip |
Тексты тестовых примеров ( Си ) tavz4r_c.zip tavz4d_c.zip tavz6r_c.zip tavz6d_c.zip |
Текст подпрограммы и версий ( Паскаль ) avz4r_p.zip avz4e_p.zip avz6r_p.zip avz6e_p.zip |
Тексты тестовых примеров ( Паскаль ) tavz4r_p.zip tavz4e_p.zip tavz6r_p.zip tavz6e_p.zip |
Упорядочивание вектора по возрастанию абсолютных значений его компонент с запоминанием произведенных перестановок.
АVZ4R производит упорядочивание N последовательно расположенных компонент вектора А по возрастанию абсолютных значений с запоминанием произведенных перестановок в векторе IР.
R.С.Singleton, Аlgorithm 347, an efficient algorithm for sorting with minimal storage, CACM, 12, 3, 1969.
SUBROUTINE AVZ4R (A, N, IP)
Параметры
A - | вещественный одномерный массив размера по крайней мере N, содержащий компоненты исходного вектора A; по окончании работы подпрограммы содержит абсолютные значения компонент в возрастающем порядке; |
N - | заданное число упорядочиваемых компонент (тип: целый); |
IP - | целый вектор длины N, содержащий информацию о произведенных перестановках при упорядочивании (см. замечания по использованию). |
Версии
AVZ4D - | упорядочивание вектора, заданного с удвоенной точностью, по возрастанию абсолютных значений его компонент с запоминанием произведенных перестановок. |
AVZ6R - | упорядочивание вектора по возрастанию значений его компонент с запоминанием призведенных перестановок. |
AVZ6D - | упорядочивание вектора, заданного с удвоенной точностью, по возрастанию значений его компонент с запоминанием призведенных перестановок. |
Вызываемые подпрограммы: нет
Замечания по использованию
В подпрограммах АVZ4D и АVZ6D параметр А должен иметь тип DОUВLЕ РRЕСISIОN. Компонентам целого вектора IР перед началом работы подпрограмм должны быть присвоены следующие значения: IР(1) = 1 , IР(2) = 2 , ... , IР(N) = N . В ходе работы подпрограмм над компонентами вектора IР производятся те же перестановки, что и над компонентами вектора А. В общем случае вектор IР может содержать на входе любую подстановку. По окончании работы подпрограммы АVZ6R и АVZ6D массив А содержит компоненты исходного вектора в возрастающем порядке. |
DIMENSION A(10), B(10), IPA(10), IPB(5) DATA A /10., 9., 8., 7., 6., 5., 4., 3., 2., 1./ DATA B /- 1., - 2., - 3., - 4., - 5., - 6., - 7., - 8., - 9., - 10./ DATA IPA /1, 2, 3, 4, 5, 6, 7, 8, 9, 10/ DATA IPB /1, 2, 3, 4, 5/ NA = 10 NB = 5 CALL AVZ4R (A, NA, IPA) CALL AVZ6R (B, NB, IPB) Результаты: А = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10) IPA = (10, 9, 8, 7, 6, 5, 4, 3, 2, 1) B = (- 5, - 4, - 3, - 2, - 1, - 6, - 7, - 8, - 9, - 10) IPB = (5, 4, 3, 2, 1)