Сформировать массив Z из элементов массива Х и Y, упорядочивая их по возрастанию - C (СИ)
Формулировка задачи:
Массив Х[N] – упорядочен по возрастанию, массив Y[N]- упорядочен по убыванию. Сформировать массив Z из элементов массива Х и Y, упорядочивая их по возрастанию.
Решение задачи: «Сформировать массив Z из элементов массива Х и Y, упорядочивая их по возрастанию»
textual
Листинг программы
#include <stdio.h>
#define N 5
void SelectSort (int a[])
{
int i=0,j=0,min=0;
for (i=0;i<N*2;i++)
{
min=i;
for (j=i+1;j<N*2;j++)
{
if (a[min]>a[j]) min=j;
}
if (min!=i){
a[i]+=a[min];
a[min]=a[i]-a[min];
a[i]-=a[min];
}
}
}
int main(void)
{
int i,k;
int x[N]={1,13,20,50,66},y[N]={34,22,21,15,1},z[2*N]={0};
for (i=0,k=0;k<N*2;k++,i++){ // копируем все элементы в z
if (k<=4) z[k]=x[i];
else z[k]=y[i-5];
}
SelectSort(z); //сортируем получившийся массив z выбором
for (i=0;i<2*N;i++) printf("%d ",z[i]); // печатаем отсортированный массив z
return 0;
}
Объяснение кода листинга программы
- Включаем стандартную библиотеку в код.
- Определяем размер массива N = 5.
- Создаем функцию SelectSort для сортировки массива a.
- Внутри функции инициализируем переменные i, j, min = 0.
- В цикле for с условием i < N*2 проходим по элементам массива a.
- Для каждого элемента находим минимальный элемент в оставшейся части массива и запоминаем его индекс в переменную min.
- Если элемент по индексу min больше текущего элемента, меняем значения текущего элемента и элемента по индексу min.
- Если индекс min не равен текущему индексу, производим операцию сложения-вычитания для элементов a[i] и a[min].
- В основной функции main создаем массивы x и y, заполняем их значениями.
- Создаем массив z, инициализируем его нулями.
- В цикле for копируем элементы x и y в массив z.
- Вызываем функцию SelectSort для сортировки массива z.
- Выводим отсортированный массив z на экран.
- Возвращаем 0, чтобы завершить работу программы.