Maison >Java >javaDidacticiel >Comment puis-je fusionner efficacement deux tableaux triés ?
Comment fusionner efficacement deux tableaux triés
Dans une récente interview, on vous a demandé de fusionner deux tableaux triés en un seul tableau trié. Vous avez fourni une solution qui impliquait de comparer des éléments et de les ajouter à un nouveau tableau. Bien que cette approche soit correcte, elle peut être optimisée pour de meilleures performances.
Voici une solution plus efficace :
public static int[] merge(int[] a, int[] b) { int[] answer = new int[a.length + b.length]; int i = 0, j = 0, k = 0; while (i < a.length && j < b.length) { answer[k++] = a[i] < b[j] ? a[i++] : b[j++]; } while (i < a.length) answer[k++] = a[i++]; while (j < b.length) answer[k++] = b[j++]; return answer; }
La solution optimisée utilise une seule boucle pour parcourir les deux tableaux et fusionner les dans le tableau de réponses. En utilisant l'opérateur ternaire (? :), nous pouvons déterminer le plus petit élément et l'ajouter au tableau de réponses sans nécessiter une instruction conditionnelle supplémentaire.
De plus, nous utilisons k pour incrémenter l'index du tableau de réponses après chaque élément est ajouté, simplifiant le code et réduisant le nombre d'opérations.
Par rapport à la solution originale, cette version optimisée est plus concise et s'exécute avec moins de vérifications conditionnelles, ce qui entraîne une amélioration efficacité.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!