Junior — Middle
Comment peut-on fusionner deux tableaux triés en un nouveau tableau trié, en utilisant de la mémoire supplémentaire ?
sobes.tech IA
Réponse de l'IA
Pour fusionner deux tableaux triés en un nouveau tableau trié en utilisant de la mémoire supplémentaire, vous pouvez appliquer un algorithme de fusion (merge), similaire à une étape du tri par fusion.
Idée:
- Créer un nouveau tableau dont la taille est la somme des tailles des deux tableaux d'origine.
- Utiliser deux pointeurs, un pour chaque tableau.
- Comparer les éléments actuels des deux tableaux, ajouter le plus petit au nouveau tableau et déplacer le pointeur correspondant.
- Lorsque l'un des tableaux est terminé, ajouter les éléments restants de l'autre tableau.
Exemple en Kotlin (Android):
fun mergeSortedArrays(arr1: IntArray, arr2: IntArray): IntArray {
val result = IntArray(arr1.size + arr2.size)
var i = 0
var j = 0
var k = 0
while (i < arr1.size && j < arr2.size) {
if (arr1[i] <= arr2[j]) {
result[k++] = arr1[i++]
} else {
result[k++] = arr2[j++]
}
}
while (i < arr1.size) {
result[k++] = arr1[i++]
}
while (j < arr2.size) {
result[k++] = arr2[j++]
}
return result
}
Ce algorithme fonctionne en temps O(n + m), où n et m sont les tailles des tableaux, et utilise de la mémoire supplémentaire pour le nouveau tableau.