fourni un est exactement la bonne taille et les tableaux sont déjà triés (comme cela semble être le cas), le pseudo-code suivant devrait aider:
# 0 1 2 3 4 5 6 7 8
a = [1,3,5,7,0,0,0,0,0]
b = [2,4,6,8,10]
afrom = 3
bfrom = 4
ato = 8
while bfrom >= 0:
if afrom == -1:
a[ato] = b[bfrom]
ato = ato - 1
bfrom = bfrom - 1
else:
if b[bfrom] > a[afrom]:
a[ato] = b[bfrom]
ato = ato - 1
bfrom = bfrom - 1
else:
a[ato] = a[afrom]
ato = ato - 1
afrom = afrom - 1
print a
C'est fondamentalement une fusion des deux listes en une, commençant aux extrémités. Une fois que bfrom
a atteint -1, il n'y a plus d'éléments dans b
, donc le reste dans a
était inférieur au plus bas dans b
. Par conséquent, le reste de a
peut rester inchangé.
Si a
tourne en premier, il est question de transférer le reste de b
puisque tous les éléments a
ont été transférés au-dessus ato
déjà.
Ceci est O (n) tel que demandé et entraînerait quelque chose comme:
[1, 2, 3, 4, 5, 6, 7, 8, 10]
Comprendre que pseudo-code et le traduire dans votre langue spécifique est un travail pour vous, maintenant que vous 'ai déclaré ses devoirs :-)
Fortement odeur de devoirs ... Qu'avez-vous essayé, mon ami? – NawaMan