Сформировать упорядоченный массив из элементов двух исходных - C (СИ)
Формулировка задачи:
Добрый день,форумчане! Помогите с задачей. Даны два упорядоченных файла с числами. Нужно их слить в 3 упорядоченный. Желательнее максимально проще. Всем заранее спасибо за помощь.
Решение задачи: «Сформировать упорядоченный массив из элементов двух исходных»
textual
Листинг программы
void arrayMerge(int target[], int src1[], int len1, int src2[], int len2) { int i = 0; int j = 0; int k = 0; for ( ; i < len1 && j < len2; k++ ) { if ( src1[i] <= src2[j] ) { target[k] = src1[i]; i += 1; } else { target[k] = src2[j]; j += 1; } } for ( ; i < len1; i++ ) { target[k] = src1[i]; k += 1; } for ( ; j < len2; j++ ) { target[k] = src2[j]; k += 1; } }
Объяснение кода листинга программы
- В функции
arrayMerge
есть 4 входных параметра:target
,src1
,len1
иsrc2
,len2
. - Переменные
i
,j
иk
используются в качестве индексов для прохода по массивам. - В цикле
for
с условиемi < len1 && j < len2
происходит сравнение и объединение элементов изsrc1
иsrc2
вtarget
. - Если
src1[i]
меньше или равноsrc2[j]
, то элементsrc1[i]
копируется вtarget[k]
. - Если
src1[i]
большеsrc2[j]
, то элементsrc2[j]
копируется вtarget[k]
. - Индексы
i
иj
увеличиваются на 1 после каждой итерации. - Если после завершения цикла остались элементы в одном из массивов, они копируются в
target
без условия. - Функция возвращает отсортированный массив
target
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д