Array 63. Даны два массива A и B размера 5, элементы которых упорядочены по возрастанию. Объединить эти массивы так, чтобы результирующий массив C (размера 10) остался упорядоченным по возрастанию.

Решение на Python 3

import random

N = random.randrange(2,11)
a = sorted([random.randrange(0,10) for i in range(N)])
b = sorted([random.randrange(0,10) for i in range(N)])

print("N:",N)
print("Array a:\n",a)
print("Array b:\n",b)

c = sorted(a+b)

print("Length of c:\n",len(c))
print("Array c:\n",c)

c2 = []
i = 0
a_idx = 0
b_idx = 0
while i < 2*N and a_idx < N and b_idx < N :
## print("i:",i,"; a_idx:",a_idx,"; b_idx:",b_idx)
if a[a_idx] == b[b_idx] :
c2.append(a[a_idx])
c2.append(b[b_idx])
a_idx += 1
b_idx += 1
i += 2
elif a[a_idx] < b[b_idx] :
c2.append(a[a_idx])
a_idx += 1
i += 1
else :
c2.append(b[b_idx])
b_idx += 1
i += 1
if a_idx == N :
while b_idx < N :
c2.append(b[b_idx])
b_idx += 1
if b_idx == N :
while a_idx < N :
c2.append(a[a_idx])
a_idx += 1

print("Length of c2:\n",len(c2))
print("Array c2:\n",c2)