Из двух матриц создать результирующий упорядоченный массив - 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;
- }
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы: stdio.h, stdlib.h и time.h
- Определяется функция printArray, которая выводит элементы массива в формате 4-х разрядного целого числа, сдвинутого влево на 4 позиции
- Определяется функция intComparator, которая сравнивает два указателя на целые числа в пересортированном массиве
- В функции main создаются массивы a и b, заполняются случайными числами от 0 до 19
- Массивы a и b сортируются по возрастанию с помощью функции qsort и функции сравнения intComparator
- Выводятся отсортированные массивы a и b
- Инициализируются индексы i и j, которые будут использоваться в цикле
- В цикле, пока i и j не станут отрицательными, происходит заполнение массива c элементами из массива b, а затем, если i больше или равно нулю, добавляется элемент из массива a
- Выводится массив c
- В функции main добавляется вызов функции getchar, чтобы программа не закрылась сразу после вывода массива c
- Возвращается 0, что означает успешное выполнение программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д