Из двух матриц создать результирующий упорядоченный массив - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Даны два одномерных массива, упорядоченные по убыванию, сделать один массив, упорядоченный по возрастанию. Сортировать полученный массив нельзя.

Решение задачи: «Из двух матриц создать результирующий упорядоченный массив»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
void printArray(int* a, int size) {
    printf("\n");
    for (int i = 0; i < size; ++i) printf("%4d", a[i]);
}
 
int intComparator(const void* p1, const void* p2) {
    return (*(int*)p2 - *(int*)p1);
}
 
int main() {
    int a[10], b[10], c[20];
    srand(time(NULL));
 
    for (int i = 0; i < 10; ++i) {
        a[i] = rand() % 20;
        b[i] = rand() % 20;
    }
 
    qsort((void*)a, 10, sizeof(int), intComparator);
    qsort((void*)b, 10, sizeof(int), intComparator);
 
    printArray(a, 10);
    printArray(b, 10);
 
    int i = 9, j = 9, cIndex = 0;
    for (; i >= 0 || j >= 0; --i) {
        for (; j >= 0 && (i < 0 || b[j] < a[i]); --j)
            c[cIndex++] = b[j];
        if(i >= 0)
            c[cIndex++] = a[i];
    }
 
    printArray(c, 20);
    getchar();
 
    return 0;
}

Объяснение кода листинга программы

  1. Включаются необходимые заголовочные файлы: stdio.h, stdlib.h и time.h
  2. Определяется функция printArray, которая выводит элементы массива в формате 4-х разрядного целого числа, сдвинутого влево на 4 позиции
  3. Определяется функция intComparator, которая сравнивает два указателя на целые числа в пересортированном массиве
  4. В функции main создаются массивы a и b, заполняются случайными числами от 0 до 19
  5. Массивы a и b сортируются по возрастанию с помощью функции qsort и функции сравнения intComparator
  6. Выводятся отсортированные массивы a и b
  7. Инициализируются индексы i и j, которые будут использоваться в цикле
  8. В цикле, пока i и j не станут отрицательными, происходит заполнение массива c элементами из массива b, а затем, если i больше или равно нулю, добавляется элемент из массива a
  9. Выводится массив c
  10. В функции main добавляется вызов функции getchar, чтобы программа не закрылась сразу после вывода массива c
  11. Возвращается 0, что означает успешное выполнение программы

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.75 из 5
Похожие ответы