Rumah > Java > javaTutorial > Bagaimanakah Kita Boleh Menggabungkan Dua Tatasusunan Isih dengan Cekap?

Bagaimanakah Kita Boleh Menggabungkan Dua Tatasusunan Isih dengan Cekap?

Mary-Kate Olsen
Lepaskan: 2024-11-30 12:27:11
asal
1032 orang telah melayarinya

How Can We Efficiently Merge Two Sorted Arrays?

Menggabungkan Tatasusunan Isih Dengan Cekap: Kaedah Yang Diperbaiki

Untuk menggabungkan dua tatasusunan yang diisih ke dalam tatasusunan tunggal, beberapa pendekatan pengaturcaraan boleh digunakan. Walau bagaimanapun, salah satu teknik yang paling cekap dan kerap disyorkan adalah seperti berikut:

Algoritma ini berulang melalui kedua-dua tatasusunan secara serentak, membandingkan elemen pada setiap indeks semasa dan menambahkan elemen yang lebih kecil pada tatasusunan output. Proses ini berterusan sehingga salah satu tatasusunan habis. Sebarang elemen yang tinggal dalam tatasusunan lain kemudiannya dilampirkan.

Berikut ialah contoh pelaksanaan yang dioptimumkan bagi algoritma ini dalam Java:

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;
}
Salin selepas log masuk

Pendekatan ini mempunyai kerumitan masa O(n m ), di mana n dan m masing-masing mewakili panjang tatasusunan a dan b. Versi yang dipertingkatkan ini menghapuskan pemeriksaan yang tidak perlu untuk keletihan dan menggunakan pembinaan gelung semasa yang padat untuk penggabungan yang cekap.

Atas ialah kandungan terperinci Bagaimanakah Kita Boleh Menggabungkan Dua Tatasusunan Isih dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan