В теории есть 2 очень больших массива, точно известно, что они уже отсортированы. Нужно получить с этих двух массивов один, также отсортированный. Для более ясного примера какой нужен результат:
$a = [1,3,6,8,12]
$b = [1,6,7,9,10,12,16]
$res = [1,1,3,6,6,7,8,9,10,12,12,16]
Вариант со встроенными функциями примером из PHP
не предлагать (аля array_merge и sort), т.к. это будет работать дольше при очень больших входных данных.
Вот что сварганил на php:
$a = [1,3,5,6,7,8,9];
$b = [2,4,6,8,9,12];
$i = $j =0;
$res = [];
$c_a = count($a);
$c_b = count($b);
while ($i < $c_a && $j < $c_b )
{
if( $a[$i] < $b[$j]){
$res[] = $a[$i];
$i++;
}elseif ($a[$i] > $b[$j]) {
$res[] = $b[$j];
$j++;
}else {
$res[] = $a[$i];
$res[] = $a[$i];
$i++;
$j++;
}
}
Но как учитывать длину, пока не допер
0 => int 1
1 => int 2
2 => int 3
3 => int 4
4 => int 5
5 => int 6
6 => int 6
7 => int 7
8 => int 8
9 => int 8
10 => int 9
11 => int 9