Описать процедуру SortIndex(A, N, I), формирующую для вещественного массива A размера N индексный массив I - C (СИ)
Формулировка задачи:
Прошу помощи в решении задачи.
Описать процедуру SortIndex(A, N, I), формирующую для вещественного массива A размера N индексный массив I — массив целых чисел того же размера, содержащий номера элементов массива A в том порядке, который соответствует возрастанию элементов массива A (сам массив A при этом не изменяется). Индексный массив I является выходным параметром. С помощью этой процедуры создать индексные массивы для массивов A, B, C размера NA, NB, NC соответственно.
Решение задачи: «Описать процедуру SortIndex(A, N, I), формирующую для вещественного массива A размера N индексный массив I»
textual
Листинг программы
#include <stdio.h>
#include <math.h>
int main ()
{
void SortIndex(float *, int , int *);
int N=5, i, ind[N], lamp, j;
float a[N];
for(i=0;i<N;i++)
{
printf("a[%d]=",i);
scanf("%f", &a[i]);
}
for(i=0; i<N; i++)
printf("%5.1f", a[i]);
SortIndex(a, N, ind);
puts("\n");
for(i=0; i<N; i++)
printf("%5d", ind[i]);
getchar();
getchar ();
return 0;
}
void SortIndex(float *a, int N, int *ind)
{
int i, j, t;
float b[N], temp;
for(i=0; i<N; i++)
b[i]=a[i];
for(i=0; i<N; i++)
ind[i]=i;
puts("\n");
for(i=0; i<N; i++)
printf("%5d", ind[i]);
for(j=0; j<N-1; j++)
for(i=0; i<N-1; i++)
{
if(b[i]>b[i+1])
{
temp=b[i];
b[i]=b[i+1];
b[i+1]=temp;
t=ind[i];
ind[i]=ind[i+1];
ind[i+1]=t;
}
}
puts("\n");
for(i=0; i<N; i++)
printf("%5d", ind[i]);
}
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы
- Задаем размер массива N = 5
- Инициализируем массив a[N] и индексный массив ind[N]
- Сортируем массив a[N] методом пузырька
- Выводим отсортированный массив ind[N]