|
Документ взят из кэша поисковой машины. Адрес
оригинального документа
: http://num-anal.srcc.msu.su/lib_na/cat/av_htm_c/avz3r_c.htm
Дата изменения: Fri Dec 4 13:24:21 2015 Дата индексирования: Sun Apr 10 01:34:49 2016 Кодировка: Windows-1251 |
|
Текст подпрограммы и версий 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)