Сформировать упорядоченный массив из элементов двух исходных - 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.