Maison >Java >javaDidacticiel >Comment puis-je fusionner efficacement deux tableaux triés ?

Comment puis-je fusionner efficacement deux tableaux triés ?

DDD
DDDoriginal
2024-11-28 15:17:14653parcourir

How Can I Efficiently Merge Two Sorted Arrays?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn