Aller au contenu

Fusion de deux listes triées⚓︎

La fonction fusion prend deux listes liste_a, liste_b d'entiers triées par ordre croissant et les fusionne en une seule liste triée liste_triee qu'elle renvoie.

Pour cet exercice, on n'utilisera ni sort, ni sorted.

Exemples
🐍 Console Python
>>> fusion([1, 6, 10], [0, 7, 8, 9])
[0, 1, 6, 7, 8, 9, 10]
🐍 Console Python
>>> fusion([1, 6, 10], [])
[1, 6, 10]
🐍 Console Python
>>> fusion([], [0, 7, 8, 9])
[0, 7, 8, 9]

Compléter le code :

###
# testsbksl-nlassert fusion([1, 6, 10], [0, 7, 8, 9]) == [0, 1, 6, 7, 8, 9, 10]bksl-nlbksl-nlassert fusion([1, 6, 10], []) == [1, 6, 10]bksl-nlbksl-nlassert fusion([], [0, 7, 8, 9]) == [0, 7, 8, 9]bksl-nlbksl-nl# autres testsbksl-nlbksl-nlimport randombksl-nlbksl-nlexemplepy-unda = sorted(random.sample(range(10py-strpy-str9), 100))bksl-nlexemplepy-undb = sorted(random.sample(range(10py-strpy-str9), 100))bksl-nlattendu = exemplepy-unda + exemplepy-undbbksl-nlattendu.sort()bksl-nlresultat = fusion(exemplepy-unda[:], exemplepy-undb[:])bksl-nlfor a, b in zip(resultat, attendu):bksl-nl assert a == b, "Erreur dans la fusion de grandes listes"bksl-nlbksl-nlresultat = fusion(exemplepy-unda, [])bksl-nlfor a, b in zip(resultat, exemplepy-unda):bksl-nl assert a == b, "Erreur dans la fusion quand la seconde est vide"bksl-nlbksl-nlresultat = fusion([], exemplepy-undb)bksl-nlfor a, b in zip(resultat, exemplepy-undb):bksl-nl assert a == b, "Erreur dans la fusion quand la seconde est vide"bksl-nlbksl-nl 5/5

def fusion(listepy-unda, listepy-undb):bksl-nl taillepy-unda = len(listepy-unda)bksl-nl taillepy-undb = len(listepy-undb)bksl-nl listepy-undtriee = []bksl-nl ipy-unda = 0bksl-nl ipy-undb = 0bksl-nl while (ipy-unda < taillepy-unda) and (...):bksl-nl if listepy-unda[ipy-unda] < listepy-undb[ipy-undb]:bksl-nl listepy-undtriee.append(...[ipy-unda])bksl-nl ipy-unda = ...bksl-nl else:bksl-nl listepy-undtriee.append(listepy-undb[...])bksl-nl ipy-undb = ...bksl-nl while ipy-unda < taillepy-unda:bksl-nl listepy-undtriee.append(...)bksl-nl ipy-unda = ...bksl-nl while ipy-undb < taillepy-undb:bksl-nl listepy-undtriee.append(...)bksl-nl ...bksl-nl return listepy-undtrieebksl-nlbksl-nlbksl-nl# testsbksl-nlassert fusion([1, 6, 10], [0, 7, 8, 9]) == [0, 1, 6, 7, 8, 9, 10]bksl-nlbksl-nlassert fusion([1, 6, 10], []) == [1, 6, 10]bksl-nlbksl-nlassert fusion([], [0, 7, 8, 9]) == [0, 7, 8, 9]bksl-nlbksl-nldef fusion(listepy-unda, listepy-undb):bksl-nl taillepy-unda = len(listepy-unda)bksl-nl taillepy-undb = len(listepy-undb)bksl-nl listepy-undtriee = []bksl-nl ipy-unda = 0bksl-nl ipy-undb = 0bksl-nl while (ipy-unda < taillepy-unda) and (ipy-undb < taillepy-undb):bksl-nl if listepy-unda[ipy-unda] < listepy-undb[ipy-undb]:bksl-nl listepy-undtriee.append(listepy-unda[ipy-unda])bksl-nl ipy-unda += 1bksl-nl else:bksl-nl listepy-undtriee.append(listepy-undb[ipy-undb])bksl-nl ipy-undb += 1bksl-nl while ipy-unda < taillepy-unda:bksl-nl listepy-undtriee.append(listepy-unda[ipy-unda])bksl-nl ipy-unda += 1bksl-nl while ipy-undb < taillepy-undb:bksl-nl listepy-undtriee.append(listepy-undb[ipy-undb])bksl-nl ipy-undb += 1bksl-nl return listepy-undtrieebksl-nlbksl-nl

A

Z