Текст подпрограммы и версий avz3r_c.zip avz3d_c.zip avz5r_c.zip avz5d_c.zip |
Тексты тестовых примеров tavz3r_c.zip tavz3d_c.zip tavz5r_c.zip tavz5d_c.zip |
Упорядочивание вектора по возрастанию абсолютных значений его компонент.
avz3r_c производит упорядочивание N последовательно расположенных компонент вектора А по возрастанию абсолютных значений.
R.С.Singleton, Аlgorithm 347, an efficient algorithm for sorting with minimal storage, CACM, 12, 3, 1969.
int avz3r_c (real *a, integer *n)
Параметры
a - | вещественный одномерный массив размера по крайней мере n, содержащий компоненты исходного вектора A; по окончании работы подпрограммы содержит абсолютные значения компонент в возрастающем порядке; |
n - | заданное число упорядочиваемых компонент (тип: целый). |
Версии
avz3d_c - | упорядочивание вектора, заданного с удвоенной точностью, по возрастанию абсолютных значений его компонент. |
avz5r_c - | упорядочивание вектора по возрастанию значений его компонент. |
avz5d_c - | упорядочивание вектора, заданного с удвоенной точностью, по возрастанию значений его компонент. |
Вызываемые подпрограммы: нет
Замечания по использованию
В подпрограмах avz3d_c и avz5d_c параметр a должен иметь тип double. По окончании работы подпрограмм avz5r_c и avz5d_c массив a содержит компоненты исходного вектора A возрастающем порядке. |
1. int main(void) { /* Initialized data */ static float a[10] = { -1.f,1.5f,-2.f,2.5f,-3.f,3.5f,-4.f,4.5f,-5.f,5.5f }; /* Local variables */ extern int avz3r_c(float *, int *); static int n, j; n = 10; avz3r_c(a, &n); for (j = 0; j <= 5; j += 5) { printf("\n %13.5e %13.5e %13.5e %13.5e %13.5e \n", a[j], a[j+1], a[j+2], a[j+3], a[j+4]); } return 0; } /* main */ Результат: a = (1., 1.5, 2., 2.5, 3., 3.5, 4., 4.5, 5., 5.5) 1. int main(void) { /* Initialized data */ static float ba[10] = {-1.f,1.5f,-2.f,2.5f,-3.f,3.5f,-4.f,4.5f,-5.f,5.5f }; /* Local variables */ extern int avz5r_c(float *, int *); static int n, j; n = 10; avz5r_c(b, &n); for (j = 0; j <= 5; j += 5) { printf("\n %13.5e %13.5e %13.5e %13.5e %13.5e \n", b[j], b[j+1], b[j+2], b[j+3], b[j+4]); } return 0; } /* main */ Результат: b = (- 5., - 4., - 3., - 2., - 1., 1.5, 2.5, 3.5, 4.5, 5.5)