Heim > Java > javaLernprogramm > Wie kann ich zwei sortierte Arrays effizient zusammenführen?

Wie kann ich zwei sortierte Arrays effizient zusammenführen?

DDD
Freigeben: 2024-11-28 15:17:14
Original
670 Leute haben es durchsucht

How Can I Efficiently Merge Two Sorted Arrays?

So führen Sie zwei sortierte Arrays effizient zusammen

In einem aktuellen Interview wurden Sie gebeten, zwei sortierte Arrays zu einem einzigen sortierten Array zusammenzuführen. Sie haben eine Lösung bereitgestellt, bei der Elemente verglichen und an ein neues Array angehängt wurden. Obwohl dieser Ansatz richtig ist, kann er für eine bessere Leistung optimiert werden.

Hier ist eine effizientere Lösung:

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;
}
Nach dem Login kopieren

Die optimierte Lösung verwendet eine einzige Schleife, um über beide Arrays zu iterieren und zusammenzuführen sie in das Antwortarray ein. Durch die Verwendung des ternären Operators (? :) können wir das kleinere Element bestimmen und es an das Antwortarray anhängen, ohne dass eine zusätzliche bedingte Anweisung erforderlich ist.

Zusätzlich verwenden wir k, um den Index des Antwortarrays danach zu erhöhen Jedes Element wird hinzugefügt, wodurch der Code vereinfacht und die Anzahl der Vorgänge reduziert wird.

Im Vergleich zur Originallösung ist diese optimierte Version prägnanter und wird mit weniger bedingten Prüfungen ausgeführt, was zu einer Verbesserung führt Effizienz.

Das obige ist der detaillierte Inhalt vonWie kann ich zwei sortierte Arrays effizient zusammenführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage